在网络编程中,connect函数通常用于客户端建立tcp连接。使用的步骤如下:

1) 创建流式套接字

 

Java代码

1         int sockfd;  

2                 if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) <)  

3                 {  

4                         perror(fail to socket);  

5                         exit(-1);  

6                 } 

 

2) 填充服务器端地址信息

 

Java代码

7         struct sockaddr_in servaddr;  

8                 servaddr.sin_family = PF_INET;  

9                 servaddr.sin_port = htons(8888);  

10              servaddr.sin_addr.s_addr = inet_addr(192.168.1.100); 

 

3) 发送连接请求
 

Java代码

11      if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)  

12      {  

13              perror(fail to connect);  

14              exit(-1);  

15      } 

 

udp协议提供的是面向非连接的服务通信双方不需要建立连接。一方只需要建立好套接字,并显式或由系统绑定地址和端口号后就可以发送/接收数据包。和tcp不同的是,使用udp协议的数据报套接字(SOCK_DGRAM)并不限定唯一的通信方。既可以发送(sendto)数据给任意的接受方,也可以从任意的发送方接收(recvfrom)数据。

如果希望为一个数据报套接字指定唯一的通信方时,可以使用connect来实现这一功能。需要注意的是,在数据报套接字上使用connect并不是建立连接,不存在握手的过程。仅仅是为这个套接字指定一个通信方,一旦指定了对方的地址,就可以通过send/recv来发送/接收数据了。而且可以在这个数据报套接字上多次调用connect函数来指定不同的通信方。

udp中使用connect的方法和tcp中类似,只需在创建套接字时,把套接字的类型由SOCK_STREAM换成SOCK_DGRAM即可。