最近在学习Linux网络编程方面的知识,感觉还是有些困难。主要是对协议过程的理解,还有socket的API的理解不够深刻。今天复习编写了一个TCP的服务端和客户端的程序实现client.c从命令行参数中获得一个字符串发给服务器,然后接收服务器返回的已处理的字符串并打印。
server.c
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <unistd.h> 5 #include <sys/socket.h> 6 #include <netinet/in.h> 7 #include <arpa/inet.h> 8 9 #define MAXLINE 80 10 #define SERV_PORT 8000 11 12 int main(void) 13 { 14 struct sockaddr_in servaddr,cliaddr; //IPV4的地址结构 15 socklen_t cliaddr_len; 16 int listenfd,connfd; 17 char buf[MAXLINE]; 18 char str[INET_ADDRSTRLEN]; 19 int i,n; 20 21 if(-1 == (listenfd = socket(AF_INET,SOCK_STREAM,0))) //对于IPV4的family的参数为AF_INET for TCP SOCK_STREAM 表示面向流的传输协议 22 { 23 perror("socket Error");