📄 client.c
字号:
/*********************************************** * * client.c: TCP客户端程序 * 运行在PC机端,(请不要用交叉编译器编译该程序) * 此时,2410实验箱端应该运行TCP服务器程序 * ***********************************************/#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <netdb.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/socket.h>#define PORT 3490 // 客户端要监听的端口号 #define MAXDATASIZE 100 // 一次能够收到的最大字节数//int main(int argc, char *argv[])int main(void){ int sockfd, numbytes; char buf[MAXDATASIZE]; //struct hostent *he; struct sockaddr_in their_addr; // connector's address information //if (argc != 2) { //命令行参数:2410实验箱端的IP地址,如:./client 192.168.1.45 // printf("usage: client hostname\n"); // exit(1); //} //if ((he = gethostbyname(argv[1])) == NULL) { // 将域名转换为hostent指针 // perror("get host by name"); // exit(1); //} if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { //套接口的描述,为网络通信做基本的准备工作 perror("socket"); exit(1); } their_addr.sin_family = AF_INET; // 地址族,一般为AF_INET their_addr.sin_port = htons(PORT); // 把主机地址字节顺序转向网络字节顺序 //their_addr.sin_addr = *((struct in_addr *)he->h_addr); their_addr.sin_addr.s_addr = inet_addr("192.168.1.45");// 填入服务器端IP地址192.168.1.45 memset(&(their_addr.sin_zero), '\0', 8); // 填充0以保持与结构体sockaddr同样大小 if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1){ //请求与服务器连接:参数1:socket文件描述符;参数2:服务器端的连接信息;参数3:参数2的长度. perror("connect"); exit(1); } if ((numbytes = recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) { //接收数据,并返回接收到的字节数numbytes perror("recv"); exit(1); } buf[numbytes] = '\0'; printf("Received characters are: %s",buf); close(sockfd); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -