小弟是个新手,最近遇到了点小问题,用C语言实现socket同步短链接,客户端这边怎样实现呢?就是我作为客户端,发送一个请求,不断开socket链接,等待服务端应答,然后接收应答:我不是很清楚这个步骤,当我connect并发出请求后,需要使用listen使端口处于监听状态才能接收服务端的应答么?还是connect了,这个端口就既能发也能收了?有没有高手给说个步骤啊?比如先socket()创建套接字,然后connect()使用建立的套接字链接服务端,然后send发送请求,然后就可以直接read读取应答?还是在send后需要listen()使端口处于监听才能read?还有个问题,加入需要使用listen的话,需要知道是哪个端口号,可是connect的时候是不是随机找一个未用端口连接服务端,怎样知道connect后客户端使用的端口号呢?谢谢大哥大姐们!
{
////初始套接字参数。
if (!this->InitSocket())
{
Count=0;
return 0;
} ////套创建接字
if (!this->CreateSocket(Host,Port,Queue))
{
Count=0;
return 0;
} char revBuf[1024];
memset( revBuf, 0, sizeof(char)*1024 ); //包头的设置
char Buff[8]; // 包头长度
memset( Buff, 0, sizeof(Buff) );
char Buff4[4];
char Buff2[2]; this->IntToChar4(8,Buff4); //// 包头长度 8
this->IntToChar2(Queue,Buff2);////队列号 Buff[0]=Buff4[0];
Buff[1]=Buff4[1];
Buff[2]=Buff4[2];
Buff[3]=Buff4[3]; Buff[4]=12; //// 请求数据 Buff[5]=Buff2[0];
Buff[6]=Buff2[1]; Buff[7]=0;
//连接服务器
if (!this->ConnectSocket())
{
Count=0;
return 0;
} ////向服务器发送数据
send(m_SOCKET,Buff,8,0);
//从服务器接收数据
Count= recv(m_SOCKET,revBuf,1024,0);
if (Count>8) //从数据中取内容
{
for (int i=0;i<Count;i++)
{Chars[i]=revBuf[8+i];}
} //关闭套接字
this->CloseSocket();
return 11;
}