socket小记


               服务端:                                                                                                       客户端
  socket_fd  = socket( PF_ ,SOCK_  , )   :定义文件描述符                socket_fd= socket( PF_ , SOCK_ ,  )
                             命名类型,通信类型 
                      |                                                                                                      |
                     \/                                                                                                      |
   bind(socket_fd,sockaddr_un/in ,length(name)) :绑定地址                                         |
                      |                                                                                                      |        
                     \/                                                                                                     \/       
   listen(socket_fd,number);                                :监听          connect(socket,&name,&lenght):连接
                      |                                                                /                                     |
                      |                                                              /                                       |      
                      |                                                            /                                         |
                     \/                                                          /                                           |
   accept(socket_fd,&client_name,&client_length)  :接受                                              |
                      |                                                                                                      |
                     \/                                                                                                     \ /
               working                                              :处理   --------------------- --------working   
                      |
                     \/                                   
              close(socket_fd)                                    :结束
            unlink(socket_name) 
 

work:

在accept后,服务器与客户已经建立好连接了。可以调用网络I/O进行读写操作了,即实现了网咯中不同进程之间的通信!网络I/O操作有下面几组:

  • read()/write()
  • recv()/send()
  • readv()/writev()
  • recvmsg()/sendmsg()
  • recvfrom()/sendto()

推荐使用recvmsg()/sendmsg()函数,这两个函数是最通用的I/O函数,实际上可以把上面的其它函数都替换成这两个函数。

 
主机socket:
     int listen_fd,cli_fd;
     srtuct sockaddr_in server_addr;
     
     listen_fd = socket(PF_INET,SOCK_STREAM,0);                                                          创建socket对象
     bzero(server_addr,sizeof(server_addr));     
 
     server_adrr.sin_family = PF_INET;                                                                            协议类型     
     server_addr.sin_port = htons(8888);                                                                         地址端口
     server_addr.sin_addr.s_addr = inet_addr("192.168.1.101"); 或者 = htonl(INADDR_ANY); 或者 =inet_addr(argv[1]);
                                                                 选择固定ip                         本机任意地址                              用户输入
     bind(listen_fd,(struct sockaddr *)&server_addr,sizeof(server_addr)) ;                           绑定地址信息
     listen(listen_fd,5);                                                                                                    监听网络
     
     cli_fd = accept(listen_fd,NULL,NULL);       /*accept(sockfd,(struct sockaddr *)&their_addr,&len));          阻塞等待连接
     working;
     close(listen_fd)
客户端:
     int sock_fd,;
     struct sockaddr_in server_addr;
     
     sock_fd = socket(PF_INET,SOCK_STREAM,0);
     
     server_adrr.sin_family = PF_INET;
     server_addr.sin_port = htons(8888);
     server_addr.sin_addr.s_addr = inet_addr("192.168.1.101"); 或者 = htonl(INADDR_ANY); 或者 =inet_addr(argv[1]);
     
     connect(sock_fd,(struct sockaddr *)&server_addr,sizeof(server_addr));                                              发起连接
     cloes(sock_fd)
 
http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
http://www.qnr.cn/pc/erji/cpp/sj/201008/527491.html
http://www.blogjava.net/zjusuyong/articles/304788.html

猜你喜欢

转载自kris-feng.iteye.com/blog/2200079