c++socket代码

来源:互联网 发布:kitti数据集如何使用 编辑:程序博客网 时间:2024/05/01 22:12

开发环境:

window7

VisualStudio2015

服务端代码:server.cpp

#include <stdio.h>#include <winsock2.h>#pragma comment (lib, "ws2_32.lib")  //加载 ws2_32.dll#include <iostream>using namespace std;//线程#include <cstdlib>#include <windows.h>//声明DWORD WINAPI Fun1Proc(LPVOID lpParameter);int main(){printf("start server\n");/*** 可参考文档 http://c.biancheng.net/cpp/html/3031.html **///初始化 DLLWSADATA wsaData;WSAStartup(MAKEWORD(2, 2), &wsaData);//创建套接字SOCKET servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);//绑定套接字sockaddr_in sockAddr;memset(&sockAddr, 0, sizeof(sockAddr));  //每个字节都用0填充sockAddr.sin_family = PF_INET;  //使用IPv4地址sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");  //具体的IP地址sockAddr.sin_port = htons(1234);  //端口bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));//进入监听状态listen(servSock, 20);//接收客户端请求//SOCKADDR clntAddr;SOCKADDR_IN clntAddr;int nSize = sizeof(SOCKADDR);while (true){SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize);//告诉用户谁上线char szIpAddress[16];strcpy_s(szIpAddress, sizeof(szIpAddress), inet_ntoa(clntAddr.sin_addr));//cout << szIpAddress << "上线了" << endl;HANDLE hThread_1 = CreateThread(NULL, 0, Fun1Proc, (LPVOID)&clntSock, 0, NULL);CloseHandle(hThread_1);}closesocket(servSock);//终止 DLL 的使用WSACleanup();printf("end server\n");system("pause");return 0;}DWORD WINAPI Fun1Proc(LPVOID lpParameter ){SOCKET clntSock = *(SOCKET*)lpParameter;//接收服务器传回的数据char szBuffer[MAXBYTE] = { 0 };recv(clntSock, szBuffer, MAXBYTE, NULL);//输出接收到的数据//printf("Message form client: %s\n", szBuffer);cout << "Message form client: " << szBuffer << endl;//strcat(szBuffer, "发送出去");//向客户端发送数据char *str = szBuffer;send(clntSock, str, strlen(str) + sizeof(char), NULL);//关闭套接字//closesocket(clntSock);return 0;}


客户端代码:client.cpp

#include <stdio.h>#include <stdlib.h>#include <WinSock2.h>#pragma comment(lib, "ws2_32.lib")  //加载 ws2_32.dll#include <iostream>using namespace std;int main() {//初始化DLLWSADATA wsaData;WSAStartup(MAKEWORD(2, 2), &wsaData);SOCKET sock = NULL;while (true){//创建套接字sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);//向服务器发起请求sockaddr_in sockAddr;memset(&sockAddr, 0, sizeof(sockAddr));  //每个字节都用0填充sockAddr.sin_family = PF_INET;sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");sockAddr.sin_port = htons(1234);connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR)); cout << "Please input :" ;char sendString[500];cin >> sendString ; strcat(sendString, "\n");//向服务端端发送数据char *sendStr = sendString;send(sock, sendStr, strlen(sendStr) + sizeof(char), NULL);cout << sendString << endl;//接收服务器传回的数据char szBuffer[MAXBYTE] = { 0 };recv(sock, szBuffer, MAXBYTE, NULL);//输出接收到的数据//printf("Message form server: %s\n", szBuffer);cout << "Message form server:" << szBuffer << endl;//关闭套接字closesocket(sock);}//终止使用 DLLWSACleanup();system("pause");return 0;}



源代码下载地址:http://download.csdn.net/detail/baidu_19473529/9748318

写的不好的地方,万忘指正。

0 0
原创粉丝点击