📄 socket_client.c
字号:
/* Exam:测试建立一个客户端程序*/#include <fcntl.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/types.h>#include <sys/socket.h>static int sockfd ;static void err_dump(char *) ;#define HOST_ADDR "192.168.10.119"#define HOST_PORT 6000void main(int argc, char *argv[]){ struct sockaddr_in serv_addr ; /* 要联系目的主机的信息 */ int sockfd ; /* 客户端要创建的socket.fd */ int connectfd ; /* 与目的主机连接标志 */ int bindfd ; /* bindfd */ int writefd ; /* 向目的主机发送数据标志 */ int n ; /* 得到目的主机数据长度 */ char packet[9999] ; /* 发送目的主机数据 */ char bpacket[9999] ; char recepack[6] ; /* 接受目的主机的数据 */ char quit[] = {'q', '\0'} ; bzero(packet, sizeof(packet)) ; bzero(bpacket, sizeof(bpacket)) ; bzero(recepack, sizeof(recepack)) ; bzero((char *)&serv_addr, sizeof(serv_addr)) ; bindfd = 0 ; /* 复制相关信息到目的主机 */ serv_addr.sin_family = PF_INET; serv_addr.sin_addr.s_addr = inet_addr(HOST_ADDR); serv_addr.sin_port = htons(HOST_PORT); for( ; ; ) { /* 建立本地请求端socket */ if( (sockfd = socket(PF_INET, SOCK_STREAM, 0)) < 0 ) { err_dump( "Socket Error." ) ; exit( 1 ) ; } /* 与服务器建立连接 */ if( (connectfd = connect(sockfd,(struct sockaddr *)&serv_addr, sizeof(serv_addr))) < 0 ) { err_dump( "connect error." ) ; exit( 1 ) ; } printf( "input string to send or 'q' to quit.\n" ) ; gets( packet ) ; if( strcmp(packet,quit)==0 ) exit( 0 ) ; /* 向目的主机发送数据 */ if( (writefd = write(sockfd, packet, strlen(packet))) < 0 ) { err_dump( "write error." ) ; exit( 1 ) ; } printf( "sockfd=%d,bindfd=%d,connectfd=%d,writefd=%d.\n",\ sockfd,bindfd,connectfd,writefd ) ; /* 读回应信息 */ bzero(recepack, sizeof(recepack)) ; read(sockfd, recepack, 80) ; n = strlen( recepack ) ; printf( "Read data from server lenth=[%d].\n", n ) ; printf( "Sth of packet from server:%s.\n", recepack ) ; close( sockfd ) ; }}voiderr_dump(char *string){ printf( "%s\n", string ) ; perror( "System Error Message:" ) ; close( sockfd ) ; return ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -