SOCKET sockId;
struct sockaddr_in servaddr; sockId = socket(AF_INET,SOCK_STREAM,0);
if(sockId == INVALID_SOCKET)
{
#ifdef _DEBUG
printf("socket error");
#endif
return false;
}
ZeroMemory(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = inet_addr(strListenIp.c_str());
servaddr.sin_port = htons(iListenPort);
#ifdef _DEBUG
printf("\nconnectip:%s connectPort:%d sockId:%d\n",strListenIp.c_str(),iListenPort,sockId);
#endif
if(connect(sockId,(struct sockaddr *)&servaddr, sizeof(servaddr)) != 0)
{
#ifdef _DEBUG
printf("\nconnect error");
printf("\nERROR is %d\n",WSAGetLastError());
#endif
closesocket(sockId);
return false;
}
WriteSocketSec(sockId,InObj);
closesocket(sockId);
return true; 程序需要不停的向服务程序侦听的同一端口发送数据,每次发送前都是重新起socket,发送WriteSocketSec()完后关闭socket(closesocket(sockId);).
在进行较多次后connect出问题,WSAGetLastError()出来的值是10048,即WSAEADDRINUSE,Address already in use。用netstat看,有很多端口没被释放,以前听高手说closesocket关闭端口有一定延时,怀疑是connect时又用了仍为释放完全的端口。
急等高手给出解决办法。
struct sockaddr_in servaddr; sockId = socket(AF_INET,SOCK_STREAM,0);
if(sockId == INVALID_SOCKET)
{
#ifdef _DEBUG
printf("socket error");
#endif
return false;
}
ZeroMemory(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = inet_addr(strListenIp.c_str());
servaddr.sin_port = htons(iListenPort);
#ifdef _DEBUG
printf("\nconnectip:%s connectPort:%d sockId:%d\n",strListenIp.c_str(),iListenPort,sockId);
#endif
if(connect(sockId,(struct sockaddr *)&servaddr, sizeof(servaddr)) != 0)
{
#ifdef _DEBUG
printf("\nconnect error");
printf("\nERROR is %d\n",WSAGetLastError());
#endif
closesocket(sockId);
return false;
}
WriteSocketSec(sockId,InObj);
closesocket(sockId);
return true; 程序需要不停的向服务程序侦听的同一端口发送数据,每次发送前都是重新起socket,发送WriteSocketSec()完后关闭socket(closesocket(sockId);).
在进行较多次后connect出问题,WSAGetLastError()出来的值是10048,即WSAEADDRINUSE,Address already in use。用netstat看,有很多端口没被释放,以前听高手说closesocket关闭端口有一定延时,怀疑是connect时又用了仍为释放完全的端口。
急等高手给出解决办法。
解决方案 »
- 求《Windows网络编程》
- MFC为新建的类绑定一个对话框
- 窗口中的列表控件怎么控制?
- 两张纹理相似的图像,怎么进行区分?
- MFC中 WinApp 的变量是怎么回事?
- _tstof 的误差
- 如何动态分配二维字符串数组
- SQLRETURN ,SQL_API, 请帮我看看这会是什么问题? 谢谢
- 请教高手:请问如何使文本编辑器具有任意选定文本(withmouse)进行属性设置的功能
- COM进程类组件中,在一个接口中加了一个方法,成员变量类型CString,可是不行,那该用什么?
- 在VC中使用Winsock控件的方法GetData()接受数据时,第二个参数是一个类型变量,一般应该是什么值?
- C++有反射机制吗?有,请举例。
1、强行关闭,调用shutdown函数(在closesocket 前);
2、取消SO_LINGER设置,改为SO_DONTLINGER
会不会是这个原因造成的有些端口没有释放。听人说可以先在closesocket之前调用一下shutdown()函数来从容中断连接!
函数原型:
int shutdown(socket s,int how)
不知道是不是问题所在,共同进步!!!!
不过你的设计可能要改一改了。