#include <stdio.h>
#include <Winsock2.h>
#include <stdlib.h>
#include <process.h>
#include <Ws2tcpip.h>
#include "stdafx.h"
void WorkThread(LPVOID ipParam) {
SOCKET sClient = (SOCKET)ipParam;
int ret;
fd_set readSet;
timeval tv;
memset(&tv, 0, sizeof(tv));
tv.tv_sec = 8;
char revData[1200];
while (true) {
FD_ZERO(&readSet);
FD_SET(sClient, &readSet);
ret = select(0, &readSet, NULL, NULL, &tv);
if (ret == SOCKET_ERROR) {
printf("select:%d\n", WSAGetLastError());
closesocket(sClient);
break;
}
if (ret == 0) {
closesocket(sClient);
continue;
}
if (FD_ISSET(sClient, &readSet)) {
memset(revData, 0, 1200);
ret = recv(sClient, revData, 1200, 0);
if (ret == SOCKET_ERROR) {
printf("recv:%d\n", WSAGetLastError());
closesocket(sClient);
continue;
}
if (ret > 0) {
revData[ret] = 0x00;
printf(revData);
}
char sendData[] = "Hello,Client!\n";
send(sClient, sendData, strlen(sendData), 0);
closesocket(sClient);
}
}
closesocket(sClient);
}
int main(int argc, char*argv[]) {
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) == SOCKET_ERROR) {
printf("Failed to load Winsock.\n");
return -1;
}
SOCKET sListen = socket(AF_INET, SOCK_STREAM, 0);
if (sListen == INVALID_SOCKET) {
printf("socket( ) Failed: %d\n", WSAGetLastError());
WSACleanup();
closesocket(sListen);
}
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(5060);
sin.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
if ((bind(sListen, (struct sockaddr *)&sin, sizeof(sin))) == SOCKET_ERROR) {
printf("bind( ) Failed: %d\n", WSAGetLastError());
closesocket(sListen);
WSACleanup();
closesocket(sListen);
}
if ((listen(sListen, 5)) == SOCKET_ERROR) {
printf("listen( ) Failed: %d\n", WSAGetLastError());
closesocket(sListen);
WSACleanup();
}
SOCKET sClient;
while (true) {
printf("Waiting for connection��\n");
sClient = accept(sListen, NULL, NULL);
if (sClient == INVALID_SOCKET) {
printf("accept() Failed: %d\n", WSAGetLastError());
continue;
} else
{
HANDLE hThread = (HANDLE)_beginthread(WorkThread, 0, (LPVOID)sClient);
if (!hThread) {
continue;
}
}
}
closesocket(sListen);
WSACleanup();
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
multithreadTCP.rar (48个子文件)
multithreadTCP
multithreadTCP.sln 2KB
Debug
TCPClient.pdb 652KB
TCPServer.ilk 351KB
TCPServer.exe 39KB
TCPClient.exe 48KB
TCPClient.ilk 416KB
TCPServer.pdb 572KB
.vs
multithreadTCP
v15
Solution.VC.db-shm 32KB
ipch
AutoPCH
70a0c21544176370
TCPCLIENT.ipch 65.56MB
65907c56edb12ad0
TCPSERVER.ipch 41.69MB
Solution.VC.db 4KB
.suo 48KB
Solution.VC.db-wal 3.25MB
Browse.VC.db 35.21MB
TCPClient
Debug
vc141.pdb 420KB
TCPClient.Build.CppClean.log 1KB
TCPClient.log 121B
TCPClient.tlog
TCPClient.lastbuildstate 232B
CL.read.1.tlog 38KB
link.read.1.tlog 3KB
link.write.1.tlog 648B
CL.write.1.tlog 680B
link.command.1.tlog 1KB
CL.command.1.tlog 754B
vc141.idb 355KB
TCPClient.obj 68KB
stdafx.h 92B
TCPClient.vcxproj 6KB
TCPClient.cpp 1KB
TCPClient.vcxproj.filters 1KB
TCPClient.vcxproj.user 165B
TCPServer
TCPServer.vcxproj 6KB
Debug
TCPServer.obj 32KB
TCPServer.tlog
CL.read.1.tlog 27KB
TCPServer.lastbuildstate 232B
link.read.1.tlog 3KB
link.write.1.tlog 648B
CL.write.1.tlog 680B
link.command.1.tlog 1KB
CL.command.1.tlog 754B
vc141.pdb 148KB
TCPServer.Build.CppClean.log 1KB
TCPServer.log 121B
vc141.idb 259KB
stdafx.h 92B
TCPServer.cpp 2KB
TCPServer.vcxproj.filters 1KB
TCPServer.vcxproj.user 165B
共 48 条
- 1
资源评论
ttangzr
- 粉丝: 7
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功