C++ TCP winsock 多线程编程的代码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++ TCP winsock 多线程编程的代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2851字,纯文字阅读大概需要5分钟。
内容图文
将写代码过程中经常用到的一些代码段珍藏起来,下边资料是关于C++ TCP winsock 多线程编程的代码,希望能对各位也有好处。
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <iostream>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
#define PORT 4000
#define IP_ADDRESS "127.0.0.1"
DWORD WINAPI ClientThread (LPVOID ipParameter)
{
SOCKET ClientScoket = (SOCKET)ipParameter;
int RET = 0;
char RecvBuffer[MAX_PATH];
while(true){
memset(RecvBuffer,0x00,sizeof(RecvBuffer));
RET = recv(ClientScoket,RecvBuffer,MAX_PATH,0);
if(RET == 0||RET == SOCKET_ERROR)
{
cout<<"failed,exit"<<endl;
break;
}
cout<<"接受的消息为"<<RecvBuffer<<endl;
}
return 0;
}
int main(void)
{
WSADATA WSA;
SOCKET severScoket,clientScoket;
struct sockaddr_in LocalAddr,clientAddr;
int AddrLen = 0;
HANDLE hThread = NULL;
int RET = 0;
if (WSAStartup(MAKEWORD(2,2),&WSA)!= 0 )
{
cout<<"init failed"<<endl;
return -1;
}
severScoket = socket(AF_INET,SOCK_STREAM,0);
if(severScoket == INVALID_SOCKET)
{
cout<<"creat failed"<<GetLastError()<<endl;
return -1;
}
LocalAddr.sin_family = AF_INET;
LocalAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS);
LocalAddr.sin_port = htons(PORT);
memset(LocalAddr.sin_zero,0x00,8);
if (RET != 0)
{
cout<<"bind failed";
return -1;
}
RET = listen(severScoket,5);
if (RET!= 0)
{
cout<<"listen failed";
return -1;
}
cout<<"服务器已启动"<<endl;
while(true)
{
AddrLen = sizeof(clientAddr);
if (clientScoket ==INVALID_SOCKET)
{
cout<<"accept failed";
break;
}
cout<<"客户端连接"<<inet_ntoa(clientAddr.sin_addr)<<"."<<clientAddr.sin_port<<endl;
hThread = CreateThread(NULL,0,ClientThread,(LPVOID)clientScoket,0,NULL);
if(hThread == NULL)
{
cout<<"creat thread failed"<<endl;
break;
}
CloseHandle(hThread);
}
closesocket(severScoket);
closesocket(clientScoket);
WSACleanup();
return 0;
}
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <iostream>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
#define PORT 4000
#define IP_ADDRESS "127.0.0.1"
int main(void)
{
WSADATA WSA;
SOCKET clientScoket;
struct sockaddr_in serveAddr;
int AddrLen = 0;
HANDLE hThread = NULL;
int RET = 0;
char SendBuffer[MAX_PATH];
if (WSAStartup(MAKEWORD(2,2),&WSA)!= 0 )
{
cout<<"init failed"<<endl;
return -1;
}
clientScoket = socket(AF_INET,SOCK_STREAM,0);
if(clientScoket == INVALID_SOCKET)
{
cout<<"creat failed"<<GetLastError()<<endl;
return -1;
}
serveAddr.sin_family = AF_INET;
serveAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS);
serveAddr.sin_port = htons(PORT);
memset(serveAddr.sin_zero,0x00,8);
if (RET != 0)
{
cout<<"connect failed";
return -1;
}
else{ cout<<"链接成攻"<<endl;}
while(true)
{
cin.getline(SendBuffer,sizeof(SendBuffer));
RET = send(clientScoket,SendBuffer,(int)strlen(SendBuffer),0);
if (RET == SOCKET_ERROR)
{
cout<<"send to error"<<endl;
break;
}
}
closesocket(clientScoket);
WSACleanup();
return 0;
}
内容总结
以上是互联网集市为您收集整理的C++ TCP winsock 多线程编程的代码全部内容,希望文章能够帮你解决C++ TCP winsock 多线程编程的代码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。