socket connect的问题
我写的简单的socket服务器和客户端程序,服务器是只能接收一个客户端的连接。代码如下
在客户端connect时我这样写
目的是第一次运行客户端可以成功连上,第二次运行客户端会提示那段文字。但问题是第一次连接上了,第二次连接后程序没反应,MessageBox里那个里面没有执行,也就是connect成功了??
相不通是怎么回事,谁能解答下。顺便告诉下怎么样实现我想要的目的,就是只能一个客户端连上,另一个连会提示错误。
// 创建套节字
SOCKET sListen = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sListen == INVALID_SOCKET)
{
printf("Failed socket() \n");
return 0;
}
// 填充sockaddr_in结构
sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(6000);
sin.sin_addr.S_un.S_addr = INADDR_ANY;
// 绑定这个套节字到一个本地地址
if(::bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
{
printf("Failed bind() \n");
return 0;
}
// 进入监听模式
if(::listen(sListen, 2) == SOCKET_ERROR)
{
printf("Failed listen() \n");
return 0;
}
// 接受客户的连接请求
sockaddr_in remoteAddr;
int nAddrLen = sizeof(remoteAddr);
SOCKET sClient;
char szText[1024];
memset(szText,0,1024);
// 接受一个新连接
sClient = ::accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);
if(sClient == INVALID_SOCKET)
{
printf("Failed accept()");
}
printf(" 接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));
}
在客户端connect时我这样写
m_socket=socket(AF_INET,SOCK_STREAM,0);
if(INVALID_SOCKET==m_socket)
{
MessageBox("创建套接字失败!");
return ;
}
SOCKADDR_IN m_serv;
m_serv.sin_addr.S_un.S_addr=htonl(dwip);
m_serv.sin_family=AF_INET;
m_serv.sin_port=htons(m_port);
if(SOCKET_ERROR==connect(m_socket,(SOCKADDR*)&m_serv,sizeof(m_serv)))
{
MessageBox("连接服务器失败,请检查当前网络是否正常或对方服务器是否开启!");
return ;
}
目的是第一次运行客户端可以成功连上,第二次运行客户端会提示那段文字。但问题是第一次连接上了,第二次连接后程序没反应,MessageBox里那个里面没有执行,也就是connect成功了??
相不通是怎么回事,谁能解答下。顺便告诉下怎么样实现我想要的目的,就是只能一个客户端连上,另一个连会提示错误。
...全文
相关推荐
windows下设置socket的connect超时
变相的实现connect的超时,我要讲的就是这个方法,原理上是这样的: 1.建立socket 2.将该socket设置为非阻塞模式 3.调用connect() 4.使用select()检查该socket描述符是否可写(注意,是可写) 5.根据select()返回的结果判断connect()结果 6.将socket设置为阻塞模式(如果你的程序不需要用阻塞模式的,这步就省了,不过一般情况下都是用阻塞模式的,这样也容易管理)
socket connect listen
sdfgdsfgsdagsdsdfdsa
基于Socket Connect的网络监控方法及系统.docx
基于Socket Connect的网络监控方法及系统.docx
MySQL错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket
主要介绍了MySQL错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket,需要的朋友可以参考下
connect-1.104-win32-msvc.zip
最新版本的git辅助工具,加速同步下载github的仓库代码。支持http socket5等方式。


网络编程
