TCP--client
来源:互联网 发布:追着打印软件2015 编辑:程序博客网 时间:2024/05/16 10:23
上章说完服务器,再来说一下客户端吧;
客户端的任务就轻松多了,由于客户端不需要固定的端口号,因此不必调⽤bind(),客户端的端口号由内核⾃动分配。客户端不是不允许调⽤bind(),只是没有必要调⽤bind()固定⼀个端⼜号,服务器也不是必须调⽤bind(),但如果服务器不调⽤bind(),内核会⾃动给服务器分配监听端⼜,每次启动服务器时端口号都不⼀样,客户端要连接服务器就会遇到⿇烦。
所以客户端只需要操心一个connect()来连接服务器,connect和bind的参数形式⼀致,区别在于bind的参数是⾃⼰的地址,⽽connect的参数是对⽅的地址。connect()成功返回0,出错返回-1。
剩下的跟服务器都是大同小异,所以主要研究服务器就好了;
1 #include <stdio.h> 2 #include <sys/types.h> 3 #include <sys/socket.h> 4 #include <netinet/in.h> 5 #include <arpa/inet.h> 6 #include <stdlib.h> 7 8 9 int main(int argc,char* argv[]) 10 { 11 if(argc != 3) 12 { 13 printf("tcp_server + ip + port_number\n"); 14 exit(1); 15 } 16 int sock = socket(AF_INET,SOCK_STREAM,0); 17 if(sock < 0) 18 { 19 printf("creat socket error\n"); 20 exit(2); 21 } 22 23 struct sockaddr_in client_socket; 24 client_socket.sin_family = AF_INET; 25 client_socket.sin_addr.s_addr = inet_addr(argv[1]); 26 client_socket.sin_port = htons(atoi(argv[2])); 27 28 if(connect(sock,(struct sockaddr*)&client_socket,sizeof(client_socket)) < 0) 29 { 30 printf("connect error!\n"); 31 return(3); 32 } 33 34 while(1) 35 { 36 char buf[1024]; 37 printf("please enter:"); 38 fflush(stdout); 39 ssize_t s = read(0,buf,sizeof(buf)-1); 40 if(s > 0) 41 { 42 buf[s] = 0; 43 write(sock,buf,sizeof(buf)-1); 44 45 ssize_t s1 = read(sock,buf,sizeof(buf)-1); 46 if(s1 > 0) 47 { 48 printf("server saying:%s\n",buf); 49 } 50 } 51 } 52 53 return 0; 54 }
阅读全文
0 0
- TCP client
- TCP Client
- TCP--client
- tcp client in c
- java Tcp Client server
- Indy tcp client
- TCP(socket vc) client
- C++ TCP Client
- linux tcp server client
- socket client(tcp)
- TCP:Server-Client程序
- C# TCP sever & client
- C++ TCP Client
- 简单的TCP-Client
- Windows TCP Client
- ECHO TCP Server Client
- Qt tcp client程序
- gevent tcp server&client
- MIPI-DSI 三种 Video Mode 理解
- Android 矢量图动画(完结篇)
- String、StringBuffer与StringBuilder之间区别
- 000
- js里面的循环结构
- TCP--client
- TensorFlow实战——RNN(LSTM)——预测sin函数
- git代码提交的一些常规流程
- 使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题?
- vue 脚手架的搭建和目录结构
- proc文件系统读取
- Linux常用基本命令
- lock和synchornized教程
- TCP的三次握手与四次挥手