简单c/s ---20110508
来源:互联网 发布:xampp修改apache目录 编辑:程序博客网 时间:2024/05/14 17:30
服务器程序
注:此例中SERV_IP为服务器IP, "127.0.0.1"为本机IP
1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <sys/socket.h>
4 #include <arpa/inet.h>
5 #include <unistd.h>
6 #include <stdlib.h>
7
8 #define SERV_IP "127.0.0.1" //本机IP
9 #define SERV_PORT 8000
10
11 void sys_err(char* err)
12 {
13 perror(err);
14 exit(1);
15 }
16 int main(void)
17 {
18 int sock_fd;
19 int net_fd;
20 int ret;
21 socklen_t addrlen;
22
23 struct sockaddr_in cli_addr;
24 struct sockaddr_in serv_addr;
25 serv_addr.sin_family = AF_INET;
26 serv_addr.sin_port = htons(SERV_PORT);
27 serv_addr.sin_addr.s_addr = inet_addr(SERV_IP);
28
29
30 sock_fd = socket(AF_INET, SOCK_STREAM, 0);
31 if(sock_fd == -1)
32 sys_err("fail to socket");
33 ret = bind(sock_fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
34 if(ret == -1)
35 sys_err("fail to bind");
36
37 ret = listen(sock_fd, 20);
38 if(ret == -1)
39 sys_err("fail to listen");
40 net_fd = accept(sock_fd, (struct sockaddr* )&cli_addr, &addrlen);
41 if(net_fd == -1)
42 sys_err("fail to accept");
43
44 char buf[1024];
45 int readsize;
46 while(1)
47 {
48 readsize = read(net_fd, buf, 1024);
49 if(readsize == 0)
50 {
51 printf("the client has exited/n");
52 break;
53
54 }
55
56 write(STDOUT_FILENO, buf, readsize);
57 }
58
59 close(sock_fd);
60
61 return 0;
62 }
客户端程序
注:SERV_IP 为服务器IP,
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <arpa/inet.h>
4 #include <sys/socket.h>
5 #include <sys/types.h>
6 #include <stdlib.h>
7 #include <string.h>
8
9 #define SERV_IP "127.0.0.1" //本机IP
10 #define SERV_PORT 8000
11
12 void sys_err(char* err)
13 {
14 perror(err);
15 exit(0);
16 }
17 int main(void)
18 {
19 int sockfd;
20 int ret;
21
22 struct sockaddr_in serv_addr;
23 serv_addr.sin_family = AF_INET;
24 serv_addr.sin_port = htons(SERV_PORT);
25 serv_addr.sin_addr.s_addr = inet_addr(SERV_IP);
26
27 sockfd = socket(AF_INET, SOCK_STREAM, 0);
28 if(sockfd == -1)
29 sys_err("fail to socket");
30 ret = connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
31 if(ret == -1)
32 sys_err("fail to connect");
33 char buf[1024];
34 int readsize;
35
36 while(1)
37 {
38 readsize = read(STDIN_FILENO, buf, 1024);
39 if(strncmp(buf, "exit", 4) == 0)
40 {
41 printf("client has exited");
42 break;
43 }
44
45 write(sockfd, buf, readsize);
46 }
47 close(sockfd);
48
49 }
- 简单c/s ---20110508
- TCP简单C/S通信
- 简单的C/S聊天室
- 简单c/s程序(Linux c)
- 传智播客-web service(1)-B/S、C/S与远程调用
- 传智播客-web service(1)-B/S、C/S与远程调用
- 读S计划- C方向的具体学习规划
- 最简单的socket c/s模型
- 简单的Java C/S模式
- 简单的套接字C/S通信
- C/S最简单的socket通信
- MFC CSocket简单C/S通信
- 简单socket【C/S,服务器收文件】
- Android/Socket编程 简单C/S模式
- MFC CSocket简单C/S通信
- 简单的时间获取C/S程序
- java----------C/S编程-----简单聊天程序
- 一个简单的C/S 架构程序
- Android--Animation
- 设计模式学习笔记-Abstract Factory
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- 关于hash_map和map的小故事
- 怎么在android中动态加载一个java 类?
- 简单c/s ---20110508
- Linux中vim常用插件
- Linux中vim常用插件
- 也谈jQuery之学习
- 关于CSDN的第一次
- java synchronized与lock区别
- private 访问继承
- 反编译Apk得到Java源代码
- 开发 Standalone Android Java 应用程序