国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

C++網(wǎng)絡(luò)編程基礎(chǔ)代碼(客戶端)--基于TCP協(xié)議

2019-11-08 03:26:01
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
//網(wǎng)絡(luò)編程客戶端//1:加載套接字庫(kù),創(chuàng)建套接字(WSAStartup() / socket());//2:向服務(wù)器發(fā)出連接請(qǐng)求(connect());//3:和服務(wù)器端進(jìn)行通信(send() / recv());//4:關(guān)閉套接字,關(guān)閉加載的套接字庫(kù)(closesocket() / WSACleanup())。#include <WinSock2.h>#include <stdio.h>#include <string.h>#include <iostream>#PRagma comment(lib,"ws2_32.lib")int main(){	WSADATA wsaData;	char Buff[1024] = {};	//判斷是否可以使用window的網(wǎng)絡(luò)編程庫(kù),初始化sock資源	if (WSAStartup(MAKEWord(2,2),&wsaData) != 0)	{		printf("Failed to load Winsock");		return 0;	}	//套接字接口結(jié)構(gòu)	SOCKADDR_IN	addrSrv;	addrSrv.sin_family = AF_INET;	addrSrv.sin_port = htons(5099);	//和服務(wù)器定好的端口號(hào)一樣	addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");			//服務(wù)器地址,這是默認(rèn)服務(wù)器在本機(jī)																	//inet_addr函數(shù)是舊函數(shù)庫(kù)的函數(shù),編譯時(shí)會(huì)報(bào)錯(cuò),解決辦法,打開(kāi)項(xiàng)目->屬性->配置屬性->c/c++ ->SDL檢測(cè)   將是改為否	//創(chuàng)建套接字接口	SOCKET	sockClient = socket(AF_INET, SOCK_STREAM, 0);	if (SOCKET_ERROR == sockClient)	{		printf("Socket() error");		return 0;	}	//和服務(wù)器建立連接	//connect函數(shù)	//#include <sys/socket.h>	//int connect(int sockfd, const struct sockaddr* servaddr, socklen_t addrlen); // 返回:成功為0,出錯(cuò)-1	//TCP客戶用connect函數(shù)來(lái)建立一個(gè)與TCP服務(wù)器連接,sockfd是由socket函數(shù)返回的套接字描述符,第二個(gè)、第三個(gè)參數(shù)分別是指向一個(gè)套接字地址結(jié)構(gòu)的指針和該結(jié)構(gòu)的大小,	//套接字結(jié)構(gòu)必須含有服務(wù)器的ip地址和端口號(hào)。注意:如果connect失敗后,就必須close當(dāng)前的套接字描述符并重新調(diào)用socket。	//客戶端在調(diào)用connect前不必非得調(diào)用bind函數(shù)(比如UDP客戶端編程中一般就不用調(diào)用bind),內(nèi)核會(huì)確定源IP地址,并選擇一個(gè)臨時(shí)端口作為源端口。	//如果是TCP套接字,調(diào)用connect函數(shù)將激發(fā)TCP的三次握手過(guò)程,而且僅在連接建立成功或出錯(cuò)時(shí)才返回。注意:connect是在接收到服務(wù)端響應(yīng)的SYN + ACK時(shí)的返回的,	//也就是三次握手的第二次動(dòng)作之后。	//UDP是可以調(diào)用connect函數(shù)的,但是UDP的connect函數(shù)和TCP的connect函數(shù)調(diào)用確是大相徑庭的,這里沒(méi)有三次握手過(guò)程。	//內(nèi)核只是檢查是否存在立即可知的錯(cuò)誤(比如目的地址不可達(dá)),記錄對(duì)端的IP和端口號(hào),然后立即返回調(diào)用進(jìn)程。	//使用了connect的UDP編程就可不必使用sendto函數(shù)了,直接使用write / read即可。	if (connect(sockClient,(struct sockaddr*)&addrSrv,sizeof(addrSrv)) == INVALID_SOCKET)	{		printf("Connect() error");		return 0;	}	else	{		//接收數(shù)據(jù)		recv(sockClient, Buff, sizeof(Buff), 0);		printf("%s/n", Buff);	}	//發(fā)送數(shù)據(jù)	char buff[] = "This is Client Message";	send(sockClient, buff, sizeof(buff), 0);	closesocket(sockClient);	WSACleanup();	system("pause");	return 0;}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 乌兰浩特市| 临澧县| 华池县| 永登县| 西畴县| 印江| 富宁县| 黄骅市| 通河县| 楚雄市| 乌苏市| 皋兰县| 濮阳县| 陆良县| 缙云县| 林州市| 青铜峡市| 台南市| 昆山市| 新昌县| 宁夏| 南靖县| 日照市| 临沂市| 桃园县| 保靖县| 佛教| 合川市| 金坛市| 深圳市| 偃师市| 和政县| 鸡西市| 湘潭市| 西畴县| 高唐县| 台中市| 安丘市| 夏河县| 永和县| 连州市|