socket

1、

 

2、tcp、udp客户服务器socket一般过程

  1 TCP编程的服务器端一般步骤是:
  2 
  3 
  4 1、创建一个socket,用函数socket();
  5 2、设置socket属性,用函数setsockopt(); * 可选
  6 3、绑定IP地址、端口等信息到socket上,用函数bind();
  7 4、开启监听,用函数listen();
  8 5、接收客户端上来的连接,用函数accept();
  9 6、收发数据,用函数send()和recv(),或者read()和write();
 10 7、关闭网络连接;
 11 8、关闭监听;
 12 
 13 struct sockaddr_in addr; 定义一个ip地址
 14 
 15 
 16 
 17 TCP编程的客户端一般步骤是:
 18 
 19 
 20 1、创建一个socket,用函数socket();
 21 2、设置socket属性,用函数setsockopt();* 可选
 22 3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
 23 4、设置要连接的对方的IP地址和端口等属性;
 24 5、连接服务器,用函数connect();
 25 6、收发数据,用函数send()和recv(),或者read()和write();
 26 7、关闭网络连接;
 27  
 28 
 29 
 30 UDP编程的服务器端一般步骤是:
 31 
 32 
 33 
 34 
 35 1、创建一个socket,用函数socket();
 36 2、设置socket属性,用函数setsockopt();* 可选
 37 3、绑定IP地址、端口等信息到socket上,用函数bind();
 38 4、循环接收数据,用函数recvfrom();
 39 5、关闭网络连接;
 40 
 41 
 42 
 43 
 44 UDP编程的客户端一般步骤是:
 45 
 46 
 47 1、创建一个socket,用函数socket();
 48 2、设置socket属性,用函数setsockopt();* 可选
 49 3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
 50 4、设置对方的IP地址和端口等属性;
 51 5、发送数据,用函数sendto();
 52 6、关闭网络连接;
 53 
 54 
 55 
 56 
 57 server.c
 58 #include <stdio.h>
 59 #include <stdlib.h>
 60 #include <errno.h>
 61 #include <string.h>
 62 #include <sys/types.h>
 63 #include <sys/socket.h>
 64 #include <sys/wait.h>
 65 #include <netinet/in.h>
 66 
 67 
 68 #define MYPORT 3490
 69 #define BACKLOG 10
 70 
 71 
 72 main()
 73 {
 74     int sockfd, new_fd;/*listen on sock_fd, new connection on new_fd*/
 75     struct socketaddr_in my_addr;//my address infomation
 76     struct socketaddr_in their_addr;//connector`s address infomation
 77     int sin_size;
 78     
 79     if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {  //socket(AF_INET, SOCK_STREAM, 0) 这是创建一个socket
 80     /*AF_INET 表示用IPV4地址族,
 81 SOCK_STREAM 是说是要是用流式套接字
 82 0 是指不指定协议类型,系统自动根据情况指定*/
 83         perror("socket err");
 84         exit(1);
 85     }
 86     
 87     my_addr.sin_family = AF_INET;  //sin_family表示协议簇,一般用AF_INET表示TCP/IP协议。
 88     my_addr.sin_port = htons(MYPORT);//设置端口号
 89     //my_addr.sin_addr.s_addr = inet_addr("192.168.0.123");
 90     my_addr.sin_addr.s_addr = INADDR_ANY;//auto-fill with local ip
 91     bzero(&(my_addr.sin_zero), 8);
 92     if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) {
 93         perror("bind err");
 94         exit(1);
 95     }
 96     
 97     if (listen(sockfd, BACKLOG) == -1) {
 98         perror("listen err");
 99         exit(1);
100     }
101     
102     while(1) {
103         sin_size = sizeof(struct sockaddr_in);
104         
105         if ((new_fd = accept(sockfd, (struct sockaddr_in *)&their_addr, &sin_size)) == -1) {
106             perror("accept err");
107             continue;
108         }
109         printf("server: got connection from %s\n", inet_ntoa(their_addr.ain_addr));
110         
111         if (!fork()) {
112             if (send(new_fd, "Hello ,world!\n", 14, 0) == -1) {
113                 perror("send err");
114             }
115             close(new_fd);
116             exit(0);
117         }
118         while(waitpid(-1, NULL, WNOHANG) > 0);
119     }
120 }
121 
122 
123 
124 
125 #include <stdio.h>
126 #include <stdlib.h>
127 #include <sys/types.h>
128 #include <sys/socket.h>
129 #include <sys/un.h>
130 #include <unistd.h>
131 int main()
132 {
133     int server_sockfd, client_sockfd;
134     int server_len, client_len;
135     struct sockaddr_un server_address;
136     struct sockaddr_un client_address;
137 
138 
139     unlink("server_socket");
140     server_sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
141 
142 
143     server_address.sun_family = AF_UNIX;
144     strcpy(server_address.sun_path, "server_socket");
145     server_len = sizeof(server_address);
146     bind(server_sockfd, (struct sockaddr *)&server_address, server_len);
147 
148 
149     listen(server_sockfd, 5);
150     while(1) {
151         char ch;
152         printf("server waiting!\n");
153 
154 
155         client_len = sizeof(client_address);
156         client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_address, &client_len);
157 
158 
159         read(client_sockfd, &ch, 1);
160         ch++;
161         write(client_sockfd, &ch, 1);
162         close(client_sockfd);
163     }
View Code

+

 

posted @ 2016-08-26 11:55  悠悠我心。  阅读(210)  评论(0编辑  收藏  举报