简单实现服务器/客户端的c代码

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<sys/types.h>
 5 #include<sys/socket.h>
 6 #include<netinet/in.h>
 7 #include <unistd.h>
 8
 9 int main() {
10     /* socket */
11     int soc_ser_l=socket(PF_INET,SOCK_STREAM,0);
12
13     /* creat server sockaddr_in */
14     struct sockaddr_in ser_addr;
15     ser_addr.sin_family=AF_INET;
16     ser_addr.sin_addr.s_addr=htonl(INADDR_ANY);
17     ser_addr.sin_port=htons(8888);
18     memset(ser_addr.sin_zero,0,8);
19
20     /* bind connect socket and ip/port */
21     if(bind(soc_ser_l,(struct sockaddr*)&ser_addr,sizeof(ser_addr))==-1)
22     {
23         printf("bind error");
24         return 0;
25     }
26
27     /* listen */
28     if(listen(soc_ser_l,20)==-1)
29     {
30         printf("listen error");
31         return 0;
32     }
33     /* creat items */
34     int soc_ser_t;
35     struct sockaddr_in cli_addr;
36     while (1){
37         /* accept */
38         int len=sizeof(ser_addr);
39         soc_ser_t=accept(soc_ser_l,(struct sockaddr *)&cli_addr,&len);
40         if(soc_ser_t==-1){
41             perror("accept error");
42             exit(1);
43         }
44
45         /* recv data */
46         char recv_buf[255];
47         int ret=recv(soc_ser_t,recv_buf,255,0);
48         if(ret>0){
49             recv_buf[ret]=‘\0‘;
50             printf("server recv:");
51             printf("%s\n",recv_buf);
52         }
53
54         /* send data  */
55         char send_msg_str[100];
56         printf("server send:");
57         fgets(send_msg_str,100,stdin);
58         *(strchr(send_msg_str,‘\n‘))=‘\0‘;
59         send(soc_ser_t,send_msg_str,strlen(send_msg_str),0);
60         close(soc_ser_t);
61     }
62
63     close(soc_ser_l);
64     return 0;
65 }
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<sys/types.h>
 4 #include<sys/socket.h>
 5 #include<netinet/in.h>
 6 #include <arpa/inet.h>
 7 #include <unistd.h>
 8
 9 int main(){
10     /* creat client socket */
11     int soc_cli=socket(PF_INET,SOCK_STREAM,0);
12     /* creat server sockaddr_in */
13     struct sockaddr_in ser_addr;
14     ser_addr.sin_family=PF_INET;
15     ser_addr.sin_addr.s_addr=inet_addr("192.168.195.129");
16     ser_addr.sin_port=htons(8888);//8888 port number has no ""
17     memset(ser_addr.sin_zero,0,8);
18
19
20     /* connect */
21     if(connect(soc_cli,(struct sockaddr*)&ser_addr,sizeof(ser_addr))==-1){
22         printf("connect error");
23         return 0;
24         }
25
26
27     /* send */
28     char cli_send_str[100];
29     printf("client send:");
30     fgets(cli_send_str,100,stdin);
31     *(strchr(cli_send_str,‘\n‘))=‘\0‘;
32
33     send(soc_cli,cli_send_str,strlen(cli_send_str),0);
34
35     /* recv */
36     char cli_recv[255];
37     int ret=recv(soc_cli,cli_recv,255,0);
38     if(ret>0){
39         cli_recv[ret]=‘\0‘;
40         printf("client recv:");
41         printf("%s\n",cli_recv);
42         }
43
44     close(soc_cli);
45     return 0;
46     }
时间: 2024-12-22 14:19:20

简单实现服务器/客户端的c代码的相关文章

运用socket实现简单的服务器客户端交互

Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信.在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务.Socket正如其英文原意

socket编程:简单TCP服务器/客户端编程

其实对于socket:我们需要理解的是他提供了一种编程概念,利用socket就可以利用系统已经封装好的内部进行通信,我们只需要关注应用层方面的数据控制就OK了. 一. 套接字(socket) socket英文为插座的意思,也就是为用户提供了一个接入某个链路的接口.而在计算机网络中,一个IP地址标识唯一一台主机,而一个端口号标识着主机中唯一一个应用进程,因此"IP+端口号"就可以称之为socket. 两个主机的进程之间要通信,就可以各自建立一个socket,其实可以看做各自提供出来一个&

socket编程:简单UDP服务器/客户端编程

对于之前的TCP协议而言,他是可靠的字节流传输,而在socket编程中,在不需要保证数据传输正确安全的情况下.或者由用户自己完成传输确认情况/服务端客户端自己实现数据传输.套接字编程也提供了UDP协议的方法. 基于UDP(不是面向连接)的socket编程,分为客户端和服务器端. 客户端的流程如下: (1)创建套接字(socket) (2)和服务器端进行通信(sendto) (3)关闭套接字 因为在socket编程中,UDP是针对数据报的数据传输,所以socket专门定义了UDP所使用的函数接口.

Windows Socket 编程_ 简单的服务器/客户端程序

转载自:http://blog.csdn.net/neicole/article/details/7459021 一.程序运行效果图 二.程序源代码 三.程序设计相关基础知识 1.计算机网络    2.IP地址    3.协议    4.网络体系结构    5.TCP/IP体系结构与特点    6.客户机/服务器模式    7.TCP/IP特点    8.套接字的引入    9.面向 连接/无连接 的套接字的系统调用时序图/流程图 一.程序运行效果图 二.程序源代码 [cpp] view pla

利用NIO的Selector处理服务器-客户端模型

内容:这是一个简单的服务器-客户端模型,利用了NIO的Selector来处理多个管道.至于Selector的介绍看这里 NIOServer: public class NIOServer { public static void main(String[] args) throws IOException, InterruptedException { Selector selector = Selector.open(); ServerSocketChannel serverSocketCha

linux-socket tcp客户端服务器编程模型及代码详解

上一篇文章介绍了 TCP/IP相关协议,socket通信流程和涉及到的各种函数: Socket简单理解 本篇将具体解释tcp客户端服务器编程模型相关的代码 文章分为4个部分: 1. TCP客户端服务器编程模型流程图 2. 网络字节序与主机字节序 3. TCP编程的地址结构 4. 详细案例代码及解释 一: TCP客户端服务器编程模型流程图 上面两张图片将整个流程已经说明的很清楚了; 二: 网络字节序与主机字节序 字节序即是保存数据的方向方式, 分为 大端存储 和 小端存储; 其中 网络字节序 使用

Linux基础——通过select实现简单的服务器与客户端

在这里,我们还是需要一个管道,只不过,我们只需这一个管道,即可知道,客户端有哪些上线.对话.下线等. 服务器端的实现代码如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <sys/stat.h> 5 #include <sys/types.h> 6 #include <fcntl.h> 7 #include <sys/t

如何用Java编写一个简单的服务器和客户机

今天我要向大家介绍的是自己编写的一个比较简单的服务器和客户机程序,注意一下哦,比较简单.好了,闲话休提,砸门直入主题. 小编先从客户机和服务器的模型开始讲解.简单来说,我们实现的这种模型呢,我们每一个用户称为一个客户机,用户之间的通信之间需要一个中转,所有客户机的通信都依托于这个中转,很明显,这个中转,就是砸门的服务器了.整个模型比较简单明了,那么,接下来我们就直接进入实现阶段. 我们从实现服务器开始.Java提供了这样的一个类,ServerSocket.我们通过实例化它的方式来创建一个服务器.

Socket网络编程--简单Web服务器(1)

这一次的Socket系列准备讲Web服务器.就是编写一个简单的Web服务器,具体怎么做呢?我也不是很清楚流程,所以我找来了一个开源的小的Web服务器--tinyhttpd.这个服务器才500多行的代码,使用C语言.这一小节就不讲别的内容了.就对这个程序进行一些注释和讲解了. 主函数: 1 int main(void) 2 { 3 int server_sock = -1; 4 u_short port = 0; 5 int client_sock = -1; 6 struct sockaddr_