学习网络编程也一段时间了,刚开始看《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> ");
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 ",strerror(errno),errno);
32  exit(0);
33  }
34
35  printf("send message to server ");
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 ");
47  exit(0);
48  }