TCP客户端

来源:互联网 发布:天融信网络管理系统 编辑:程序博客网 时间:2024/05/19 14:55
# include <stdio.h># include <sys/un.h># include <netinet/in.h># include <stdlib.h># include <sys/socket.h># include <sys/types.h>int main(int argc, char **argv){if (argc != 2){printf("Usage:%s <IP ADDRESS>\n", argv[0]);}int Client_fd;if (0 > (Client_fd = socket(PF_INET, SOCK_STREAM, 0))){perror("socket\n");exit(1);}struct sockaddr_in server;memset(&server, 0, sizeof(server));server.sin_family = PF_INET;server.sin_port = htons(8888);server.sin_addr.s_addr = inet_addr("192.168.3.99");if (0 > connect(Client_fd, (struct sockaddr *)&server, sizeof(server)))//当用socket建立了套接口后,可以调用connect为这个套接字指明远程端的地址;如果是字节流套接口,connect就使用三次握手建立一个连接;如果是数据报套接口,connect仅指明远程端地址,而不向它发送任何数据{perror("connect\n");exit(1);}char buf[100];while(1){if (0 > recv(Client_fd, buf, 100, 0))//recv和read如果返回0,表示对端把连接套接字关闭,如果接收缓冲区没有数据,read,recv,recvfrom都会阻塞{perror("recv\n");exit(1);}printf("%s\n", buf);}close(Client_fd);  //关闭双向通信  //int shutdown(int socketfd, int howto)   TCP连接是双向的(是可读写的),当我们使用close时,会把读写通道都关闭,有时候我们只希望关闭一个方向,这个时候可以使用shutdown
//howto=0 关闭读通道          howto=1关闭写通道            howto=2同closereturn 0;}

0 0
原创粉丝点击