[原]VC SOCKET实现多线程并发连接
来源:互联网 发布:矢量网络分析仪端口 编辑:程序博客网 时间:2024/05/21 21:02
最近想弄一个可以实现多线程并发连接的程序,用VC实现,可是网上没有现成的多线程并发源码,我只好自己做一个。我开始一直不知道怎么弄,后来在看一个帖子的时候,有一句话提醒了我:“Accept函数会返回一个新的SOCKET连接。”(大意是这样哈)。
说到这你可能已经会了。灵感就在一瞬间啊!我以前怎么没有注意到呢?
#include <stdio.h>
#include <Winsock2.h>
#pragma comment(lib, "ws2_32.lib")
DWORD _stdcall Thread_1 ( LPVOID lpParameter )
{
SOCKET Conn = (SOCKET)lpParameter;
while(1)
{
send(Conn,"Hello!\n",8,0);
Sleep(1000);
}
closesocket(Conn);
return 0;
}
int main()
{
WSADATA wsaData;
WSAStartup( MAKEWORD( 2, 2 ), &wsaData );SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(80); //我用的是80端口,大家最好不要用
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len);
CreateThread(NULL,0,Thread_1,(LPVOID)sockConn,0,NULL); //将新的SOCKET传给线程
}return 0;
}
搞定!用telnet测试一下!
注:再将这些代码扩展之后,使用telnet连接,在异常断开SOCKET连接时可能会导致程序自动关闭,不知道怎么回事。
- [原]VC SOCKET实现多线程并发连接
- epoll + 多线程实现并发网络连接处理
- epoll + 多线程实现并发网络连接处理
- epoll + 多线程实现并发网络连接处理
- epoll + 多线程实现并发网络连接处理
- Linux下基于socket多线程并发通信的实现
- Linux下基于socket多线程并发通信的实现
- Linux下基于socket多线程并发通信的实现
- Linux下基于socket多线程并发通信的实现
- Linux下基于socket多线程并发通信的实现 阻塞
- Linux下基于socket多线程并发通信的实现
- Windows下基于socket多线程并发通信的实现
- Linux下基于socket多线程并发通信的实现
- Linux下基于socket多线程并发通信的实现
- Linux下基于socket多线程并发通信的实现
- 实现服务器端的多线程SOCKET Server C++/VC 【转】
- 实现服务器端的多线程SOCKET Server C++/VC
- 实现服务器端的多线程SOCKET Server C++/VC
- 《成功使用MU3-WN823N无线USB网卡》的补充说明
- [原]VC被控制时关闭极域电子教室、破解联想硬盘保护系统密码(上)
- [原]VC被控制时关闭极域电子教室、破解联想硬盘保护系统密码(下)
- [原]利用极域电子教室控制别人电脑
- [原]关于VC运行时关闭极域电子教室的改进方法
- [原]VC SOCKET实现多线程并发连接
- [原]VC实现修改文件创建、访问、修改时间属性
- [原]极域电子教室3个没被发现的bug(V6 2007)
- Java调试器--jdb.exe
- [原]极域电子教室V6 2007通信协议解析(一)
- 【转】VC Base64编解码
- MSG_NOSIGNAL
- mysql几个特殊有用的命令
- Iphone开发(六)IOS中的通知--操作表ActionSheet和警报AlertView