Android驅動(dòng)開(kāi)發(fā)入門(mén)及手機案例開(kāi)發(fā)分析
在網(wǎng)絡(luò )編程中,cONnect函數通常用于客戶(hù)端建立tcp連接。使用的步驟如下:
本文引用地址:http://dyxdggzs.com/article/148721.htm1) 創(chuàng )建流式套接字
int sockfd;
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) 0)
{
perror(“fail to socket”);
exit(-1);
}
2) 填充服務(wù)器端地址信息
struct sockaddr_in servaddr;
servaddr.sin_family = PF_INET;
servaddr.sin_port = htons(8888);
servaddr.sin_addr.s_addr = inet_addr(“192.168.1.100”);
3) 發(fā)送連接請求
if (connect(sockfd, (struct sockaddr *)serv_addr, sizeof(serv_addr)) 0)
{
perror(“fail to connect”);
exit(-1);
}
注:如果客戶(hù)端的套接字沒(méi)有綁定ip地址和端口的話(huà),在連接過(guò)程中系統會(huì )自動(dòng)分配。tcp連接的建立實(shí)際上就是三次“握手”的過(guò)程。
udp協(xié)議提供的是面向非連接的服務(wù),通信雙方不需要建立連接。一方只需要建立好套接字,并顯式或由系統綁定地址和端口號后就可以發(fā)送/接收數據包。和tcp不同的是,使用udp協(xié)議的數據報套接字(SOCK_DGRAM)并不限定唯一的通信方。既可以發(fā)送(sendto)數據給任意的接受方,也可以從任意的發(fā)送方接收(recvfrom)數據。
如果希望為一個(gè)數據報套接字指定唯一的通信方時(shí),可以使用connect來(lái)實(shí)現這一功能。需要注意的是,在數據報套接字上使用connect并不是建立連接,不存在“握手”的過(guò)程。僅僅是為這個(gè)套接字指定一個(gè)通信方,一旦指定了對方的地址,就可以通過(guò)send/recv來(lái)發(fā)送/接收數據了。而且可以在這個(gè)數據報套接字上多次調用connect函數來(lái)指定不同的通信方。
在udp中使用connect的方法和tcp中類(lèi)似,只需在創(chuàng )建套接字時(shí),把套接字的類(lèi)型由SOCK_STREAM換成SOCK_DGRAM即可。
評論