孙鑫网络编程code
生活随笔
收集整理的這篇文章主要介紹了
孙鑫网络编程code
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
服務(wù)器端
/*基于TCP面向連接的 服務(wù)器*/ #include <iostream> #include <WinSock2.h> #include <stdlib.h> #include <Ws2tcpip.h> #pragma comment(lib,"Ws2_32.lib") //使用動(dòng)態(tài)鏈接庫(kù)用到 using namespace std; #define _WINSOCK_DEPRECATED_NO_WARNINGS void main() {//加載套接字 WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(1, 1);err = WSAStartup(wVersionRequested, &wsaData);if (err != 0){return;}if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1){WSACleanup(); //關(guān)閉套接字return;}//創(chuàng)建用于監(jiān)聽(tīng)的套接字 SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0); //0自動(dòng)選擇協(xié)議SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(6000);//綁定套接字 bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));//將套接字設(shè)置為監(jiān)聽(tīng)模式 listen(sockSrv, 5);SOCKADDR_IN addrClient; //調(diào)用accept的時(shí)候先定義一個(gè)地址結(jié)構(gòu)體的變量,用來(lái)接收客戶端的地址信息int len = sizeof(SOCKADDR);while (1) //服務(wù)器應(yīng)該永遠(yuǎn)等待為客戶端服務(wù){(diào)//等待客戶的請(qǐng)求到來(lái) SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);char sendBuf[100]; ////char sendBuf[20] = {'\0'};//inet_ntop(AF_INET,(void*)&addr2.sin_addr,sendBuf,16);sprintf_s(sendBuf, 100, "Welcome %s to www.sunxin.org", inet_ntop(AF_INET,&addrClient.sin_addr,sendBuf,16));//調(diào)用sprintf將一個(gè)數(shù)據(jù)格式化到buffer當(dāng)中 //取地址//發(fā)送數(shù)據(jù) send(sockConn, sendBuf, strlen(sendBuf) + 1, 0);char recvBuf[100]; //用來(lái)接收的字符數(shù)組//接受數(shù)據(jù) recv(sockConn, recvBuf, 100, 0);//打印接受的數(shù)據(jù) printf("%s\n", recvBuf);//關(guān)閉套接字 closesocket(sockConn);} }客戶端 /*基于TCP面向連接的 客戶端*/ #include <iostream> #include <WinSock2.h> #include <stdlib.h> #include <Ws2tcpip.h> #pragma comment(lib,"Ws2_32.lib") //使用動(dòng)態(tài)鏈接庫(kù)用到 using namespace std; #define _WINSOCK_DEPRECATED_NO_WARNINGS void main() {//加載套接字 WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(1, 1);err = WSAStartup(wVersionRequested, &wsaData);if (err != 0){return;}if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1){WSACleanup(); //關(guān)閉套接字return;}SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);//創(chuàng)建套接字SOCKADDR_IN addrSrv;struct in_addr s; // IPv4地址結(jié)構(gòu)體inet_pton(AF_INET, "127.0.0.1", (void*)&addrSrv.sin_addr.S_un.S_addr);//addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(6000);connect(sockClient, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));char recvBuf[100];recv(sockClient, recvBuf, 100, 0);printf("%s\n", recvBuf);send(sockClient, "This is zhangsan", strlen("This is zhangsan")+1,0);closesocket(sockClient);WSACleanup();//終止對(duì)套接字庫(kù)的使用}
總結(jié)
以上是生活随笔為你收集整理的孙鑫网络编程code的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: matlab两轮自平衡小车,基于MATL
- 下一篇: 【STM32F429的DSP教程】第47