開發環境:
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 **/ //初始化 DLL WSADATA 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() { //初始化DLL WSADATA 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); } //終止使用 DLL WSACleanup(); system("pause"); return 0;}
源代碼下載地址:http://download.csdn.net/detail/baidu_19473529/9748318
寫的不好的地方,萬忘指正。
新聞熱點
疑難解答
圖片精選