[001]socket通信--server和client实现迭代的简单例子

server端:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<unistd.h>
 5 #include<arpa/inet.h>
 6 #include<sys/socket.h>
 7
 8 #define BUFF_SIZE 1024
 9 void error_handling(char* message);
10
11 void error_handling(char* message) {
12     fputs(message, stderr);
13     fputc(‘\n‘, stderr);
14     exit(1);
15 }
16
17 int main(int argc, char **argv)
18 {
19     int serv_sock;
20      int clnt_sock;
21     char message[BUFF_SIZE];
22     int i,str_len;
23
24     //设置一个server地址serv_addr,client地址clnt_addr
25     struct sockaddr_in serv_addr;
26     struct sockaddr_in clnt_addr;
27     socklen_t clnt_addr_size = sizeof(clnt_addr);
28
29     memset(&serv_addr, 0, sizeof(serv_addr));
30     memset(&serv_addr, 0, sizeof(serv_addr));
31
32     if (argc != 2) {
33         printf("Usage : %s <port>\n", argv[0]);
34         exit(1);
35     }
36
37     //创建用于internet的流协议(TCP)socket
38     serv_sock = socket(PF_INET, SOCK_STREAM, 0);
39     if (serv_sock == -1) {
40         error_handling("socket() error");
41     }
42
43     serv_addr.sin_family = AF_INET;
44     serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
45     serv_addr.sin_port = htons(atoi(argv[1]));
46
47     //把socket和socket地址结构联系起来
48     if( bind(serv_sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr)) == -1) {
49         error_handling("bind() error");
50     }
51
52     //server_socket用于监听
53     if ( listen(serv_sock, 5) == -1) {
54         error_handling("lisen() error");
55     }
56
57     // 受理连接请求
58     for (i = 0; i < 5; i++) {
59         clnt_sock = accept(serv_sock,(struct sockaddr*)&clnt_addr,&clnt_addr_size);
60         if ( clnt_sock == -1) {
61             error_handling("accept() error");
62         } else {
63             printf("connected client %d \n", i+1);
64         }
65
66         while((str_len = read(clnt_sock, message, BUFF_SIZE)) != 0) {
67             write(clnt_sock, message, str_len);
68         }
69
70         close(clnt_sock);
71     }
72     close(serv_sock);
73
74     return 0;
75 }

client端:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<unistd.h>
 5 #include<arpa/inet.h>
 6 #include<sys/socket.h>
 7
 8 #define BUFF_SIZE 1024
 9 void error_handling(char* message);
10
11 void error_handling(char* message) {
12     fputs(message, stderr);
13     fputc(‘\n‘, stderr);
14     exit(1);
15 }
16
17 int main(int argc, char **argv) {
18     int sock;
19     struct sockaddr_in serv_addr;
20     char message[BUFF_SIZE];
21     int str_len;
22     memset(&serv_addr, 0, sizeof(serv_addr));
23
24     if (argc != 3)
25     {
26         printf("Usage: /%s <IP> <Port>\n",argv[0]);
27         exit(1);
28     }
29
30     //创建用于internet的流协议(TCP)socket
31     sock = socket(PF_INET, SOCK_STREAM, 0);
32     if (sock == -1) {
33         error_handling("socket() error");
34     }
35
36     //设置一个socket地址结构client_addr,代表客户机internet地址, 端口
37     serv_addr.sin_family = AF_INET;
38     serv_addr.sin_addr.s_addr = inet_addr(argv[1]);
39     serv_addr.sin_port = htons(atoi(argv[2]));
40
41     //把socket和socket地址结构联系起来
42     if( connect(sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr)) == -1) {
43         error_handling("connect() error");
44     } else {
45         printf("connected.......\n");
46     }
47
48     while(1) {
49         fputs("Input mesage(Q to quit) : ", stdout);
50         fgets(message, BUFF_SIZE, stdin);
51
52         if (!strcmp(message, "q\n") || !strcmp(message, "Q\n")) {
53             break;
54         }
55
56         write(sock, message, strlen(message));
57         str_len = read(sock, message, BUFF_SIZE - 1);
58         message[str_len] = 0;
59         printf("Message from server : %s \n", message);
60     }
61     close(sock);
62     return 0;
63 }
时间: 2024-10-07 06:36:04

[001]socket通信--server和client实现迭代的简单例子的相关文章

[000]socket通信--server和client实现的简单例子

在C语言中就学过scanf和printf,其实理解socket就跟这两个输入输出差不多,只不过是信息的传输而已. 1.TCP服务器端(server)的默认函数调用顺序: 按照上述的调用顺序,我们可以来写个最简单的"hello world" server程序. 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<unistd.h> 5 #inclu

Android基础入门教程——7.6.2 基于TCP协议的Socket通信(1)

Android基础入门教程--7.6.2 基于TCP协议的Socket通信(1) 标签(空格分隔): Android基础入门教程 本节引言: 上一节的概念课枯燥无味是吧,不过总有点收获是吧,本节开始我们来研究基于TCP协议的Socket 通信,先来了解下Socket的概念,以及Socket通信的模型,实现Socket的步骤,以及作为Socket服务 端与客户端的两位各做要做什么事情!好的,我们由浅入深来扣这个Socket吧! 1.什么是Socket? 2.Socket通信模型: Socket通信

java 和 C++ Socket通信(java作为服务端server,C++作为客户端client,解决中文乱码问题GBK和UTF8)

原文链接: http://www.cnblogs.com/kenkofox/archive/2010/04/25/1719649.html 代码: http://files.cnblogs.com/kenkofox/Client-CPlusPlus.rarhttp://files.cnblogs.com/kenkofox/Server_Java.rar java和C++使用Socket通信,其实底层Socket都是相通的,所以只需要按照各自的语法去做就是了. java服务器端使用ServerSo

Socket通信——C++server端和Javaclient

一句话来说就是.C++和Java 通过socket进行通信.传输数据.通过发送"字节流"就可以. 字节对于C++和java来说是通用的.可是传输的过程有很多问题须要注意,我为了弄清楚这个过程,查了一些资料,做了一些整理. 不了解C++ socket编程,能够看这篇博客: Linux 下:socket通信(Linux下,C/C++语言):http://blog.csdn.net/giantpoplar/article/details/47657303 Windows下:winsock:h

[转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计socket编程就已经基本入门了. 建议:1) 多多查查所用到的网络接口; 2) 最好有一本书,如UNIX环境高级编程,UNIX网络编程,可查询:3) 可以直接使用书上的例子更好. http://blog.csdn.net/zhenjing/article/details/4770490 TCP C

(填坑系列) 用aio写server与client进行通信的坑

最近闲来无事,就估摸着自己写个“服务注册中心”来玩,当然因为是个人写的,所以一般都是简洁版本. 代码地址在:https://gitee.com/zhxs_code/my-service-register.git 由于在处理与网络数据时,为了性能,想到用AIO来实验,结果发现AIO整个思路与之前的BIO,NIO都不一样.导致出现一些深坑,在此记录一下. (一)  AIO写的server端与client端,只能通信一次. 上代码: server端部分: 1 public class Register

C Socket Programming server client

用C语言socket编程写简单的server和client程序,目的为了测试一次socket连接中,数据从client端开始发送至server端接受完毕所耗的时间,以及找到原因和提升性能.这里贴出代码,make以后,直接运行server和client即可. sever.c /************************************ * For msmr * server_s.c * tesing the speed of socket * 2015-02-04 * [email 

Android开发socket通信——手机做server端C/S架构实现

每一部智能手机都是一部微型电脑,在学校里最喜欢的就是找上十个八个同学一起局域网内开几局dota,突然想到,拿手机C一个游戏来玩怎样,不用连wifi.不用开数据,几部手机选一个做主机,其他手机连上它的热点,便可以互动起来游戏搞起来了,多开心~~ 实际实现过程中发现拿手机本身做server的手段还真是很少有人使用,网上也很少有现成的解决方案,经过一番摸索,简单实现了手机自身做server(可兼做客户端)的socket通信功能,写出来请大家指导一下,也是简单梳理一下方便日后复用. 遇到的最大问题可能是

Java设置Client Socket链接Server超时时间

Java设置Client Socket链接Server超时时间 学习了:http://blog.csdn.net/tterminator/article/details/52494141 http://blog.csdn.net/fw0124/article/details/41227543 整理如下: Socket client = null; // 创建一个流套接字,连接到指定主机上的指定端口号 // client = new Socket(IP, PORT); client = new S