同步租塞SOCKET编程
来源:互联网 发布:淘客返利软件 编辑:程序博客网 时间:2024/04/29 23:47
大家都知道网络编程有异步非租塞方式,同步租塞方式,同步租塞方式逻辑简单,异步非租塞方式编程复杂.很多的C/S模式大都采用异步非租塞方式,在网络上也有大量的例子程序,而对于同步租塞方式却很少,下面代码为同步租塞方式予以参考:
注:服务器也使用的是同步方式
SOCKET sock;
WSADATA WSAData;
sockaddr_in addr;
int len=sizeof(sockaddr_in);
std::string strBuff = _T("");
std::string strSend = _T("");
int iReadLen = 0;
if(WSAStartup(MAKEWORD(2,2), &WSAData)!=0)
{
printf("WSAStartup error!/n");
return ;
}
if((sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET)
{
printf("socket error!/n");
return ;
}
//设置为同步阻塞方式
ULONG ulArg=0;
int iRet = ioctlsocket(sock,FIONBIO,&ulArg);
//设置接受超时时间
int iRcvTimeOut = 5000; //5秒
setsockopt(sock,SOL_SOCKET,SO_RCVTIMEO,(char*)&iRcvTimeOut,sizeof(int));
BOOL bl = TRUE;
setsockopt( sock , IPPROTO_TCP, TCP_NODELAY , (const char*)&bl, sizeof(BOOL));
setsockopt( sock , IPPROTO_TCP, SO_KEEPALIVE, (const char*)&bl, sizeof(BOOL));
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addr.sin_addr.S_un.S_addr= inet_addr("211.138.113.137");
addr.sin_family=AF_INET; //使用TCP/IP协议
addr.sin_port=htons(8039); //客户端指定的IP地址
int nConnect=connect(sock,(LPSOCKADDR)&addr,sizeof(addr)); //请求连接
if (nConnect == 0)
{
//打包的数据
strSend = MakeSendPhones();
//send data to server
int iSend = send(sock,strSend.c_str,strSend.size(),MSG_OOB);
int iRead = 0;
char szBuff[1025] = {0};
char szTempBuff[1025] = {0};
while (1)
{
memset(szBuff,0,1025);
memset(szTempBuff,0,1025);
//接收数据还可以用WSARecvEx(),如下注释部分
//int iFlag = 0;
// iRead = WSARecvEx(sock,szBuff,1024, &iFlag);
//注意我使用MSG_PEEK MSG_OOB都接收不到数据
iRead = recv(sock,szBuff,1024,0);
if (iRead > 0)
{
memcpy(szTempBuff,szBuff,iRead);
strBuff = strBuff + szTempBuff;
iReadLen += iRead;
}
else if (iRead == 0)
{
break;
}
else
{
int nErro = WSAGetLastError();
break;
}
}
}
int iClose = closesocket(sock);
WSACleanup();
- 同步租塞SOCKET编程
- C#关于socket同步编程
- c# 简单同步Socket编程
- C# socket编程 异步服务端 同步客户端
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- C# Socket编程 同步以及异步通信
- python+ajax的简单应用
- Hiberante学习之复合主键的映射
- 在webform中巧用事件进行对页面代码与后台代码的脱离
- Struts 体系结构与工作原理(图)
- ToString()格式和用法大全(网摘)
- 同步租塞SOCKET编程
- Struts核心代码ActionServlet的运行 2篇
- 实时屏幕传输
- 删除数据库中的重复数据
- 做网站的一些定律
- 用Java的加密机制保护数据
- Deap Clone
- 一个网站没有人愿意上来的几个原因:
- 减压分流:谈IDC机房的负载均衡服务(转)