学习网络编程也一段时间了,刚开始看《UNIX网络编程》的时候,觉得这本厚厚的书好难啊!看到后来,发现并没有想象中的那么难。如果你是新手,建议你看到第二部分结束后,开始着手写代码。不写代码肯定是不行的。看100遍也没有敲一遍实现一遍来的清楚。敲完以后,带着问题去看书,你会更加有针对性。提高的速度是飞快的,这也是学习任何一本书、一门语言的唯一手段。
我很希望和大家一起分享学习网络编程遇到的种种困难与不顺,也希望和大家一起讨论其中遇到的问题,一起成长,如果你刚开始打算学习网络编程,那这篇文章一定能给你一些帮助,我的邮箱:cvmimi_linhai@foxmail.com,转载请注明出处。
关于怎样介绍这个简单的实例:
--> 1、代码展示,功能介绍
--> 2、首先介绍一下客户端和服务端中函数的功能以及函数的原形。
--> 3、关于连接三次握手和TCP连接关闭时候的分组交换
--> 4、IPv4、IPv6套接字的地址结构
--> 5、一些好的学习网站总结
--> 6、代码下载
client.c
1 #include <stdio.h> 2 #include <sys/socket.h> 3 #include <sys/types.h> 4 #include <stdlib.h> 5 #include <netinet/in.h> 6 #include <errno.h> 7 #include <string.h> 8 #include <arpa/inet.h> 9 #include <unistd.h> 10 #define MAXLINE 1024 11 int main(int argc,char **argv) 12 { 13 char *servInetAddr = "127.0.0.1"; 14 int socketfd; 15 struct sockaddr_in sockaddr; 16 char recvline[MAXLINE], sendline[MAXLINE]; 17 int n; 18 19 if(argc != 2) 20 { 21 printf("client <ipaddress> \n"); 22 exit(0); 23 } 24 25 socketfd = socket(AF_INET,SOCK_STREAM,0); 26 memset(&sockaddr,0,sizeof(sockaddr)); 27 sockaddr.sin_family = AF_INET; 28 sockaddr.sin_port = htons(10004); 29 inet_pton(AF_INET,servInetAddr,&sockaddr.sin_addr) 30 if((connect(socketfd,(struct sockaddr*)&sockaddr,sizeof(sockaddr))) < 0 ) 31 { 31 printf("connect error %s errno: %d\n",strerror(errno),errno); 32 exit(0); 33 } 34 35 printf("send message to server\n"); 36 37 fgets(sendline,1024,stdin); 38 39 if((send(socketfd,sendline,strlen(sendline),0)) < 0) 40 { 41 printf("send mes error: %s errno : %d",strerror(errno),errno); 42 exit(0); 43 } 44 45 close(socketfd); 46 printf("exit\n"); 47 exit(0); 48 } |