c++ socket學習(1.6)

本文學習相關資料:
C/C++ socket編程教程

環境:vs2015
源碼:本文代碼

這次來看看UDP
之前在c++ socket學習(1.2)講過UDP怎麼發送了,那現在來做一個可以一直髮送的。

這次沒有什麼接收端和發送端了,畢竟誰發送誰就是發送端,誰接受就是接收端

先發送數據的叫發送端,先接收的叫接收端(使用bind函數的)

接收端

//前面省略了
bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));

while (1) {
	//udp接收信息,先收爲敬
	int recvlen = recvfrom(servSock, buf, readlen, 0,(sockaddr*)&clntAddr, &nSize);
	if (strcmp(buf, "exit") == 0) {
		break;
	}
	std::cout << clntAddr.sin_port << " " << "收到的信息是:" << buf << std::endl;
	//將接收的數據處理一下,再發回去
	buf[recvlen / 2] = 0;
	sendto(servSock, buf, recvlen, 0, (sockaddr*)&clntAddr, nSize);
}

發送端

int nSize = sizeof(sockaddr);
while (1) {
	std::string sendMessage;
	std::cout << "輸入要發送的內容(輸入exit結束):";
	std::cin >> sendMessage;
	sendto(client, sendMessage.c_str(), sendMessage.size() + 1, 0, (sockaddr*)&servAddr, sizeof(sockaddr));
	if (sendMessage.compare("exit") == 0) {
		break;
	}
	recvfrom(client, buf, readlen, 0, (sockaddr*)&servAddr, &nSize);
	std::cout << "我收到了接收端的:" << buf << std::endl;
}

接收端要綁定了,才能收到發送端的信息

那麼發送端沒有綁定啊,是怎麼接收到接收端處理過的信息呢?

原來發送端在調用sendto的時候,就需要一個IP地址端口,程序沒有指明的話就由系統自己來分配了。

接收端可以通過recvfrom獲得了發送端的IP地址端口,照着發回去就好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章