client|server 最简单的聊天

本文将介绍如何使用C语言实现TCP客户端与服务器之间的代理通信,包括创建套接字、绑定地址、监听连接、接受客户端连接并发送数据的过程。
  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <stdlib.h>
  4 #include <sys/socket.h>
  5 #include <netinet/in.h>
  6 int main()
  7 {
  8         int sc = 0;
  9         int ret = 0;
 10         int fd = 0;
 11         unsigned char data[1024] = {0};
 12         sc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 13         if(sc < 0){
 14                 perror("socket");
 15                 return 1;
 16         }
 17         struct sockaddr_in gg;
 18         gg.sin_family = AF_INET;
 19         gg.sin_port = htons(9527);
 20         gg.sin_addr.s_addr = inet_addr("192.168.31.238"); //这里写上自己的IP,因为访问者肯定要写主机的IP对吧。
 21 
 22         ret = bind(sc, (struct sockaddr *)&gg, 16);
 23         if(ret < 0){
 24                 perror("bind");
 25                 return 1;
 26         }
 27 
 28         ret = listen(sc, 10);
 29         if(ret < 0){
 30                 perror("listen");
 31                 return 1;
 32         }
 33 
 34         struct sockaddr_in nfd;
 35         int nfd_len = 0;
 36         fd = accept(sc, (struct sockaddr *)&nfd, &nfd_len);
 37         if(ret < 0){
 38                 perror("accept");
 39                 return 1;
 40         }
 41 
 42         ret = recv(fd, data, 1024, 0);
 43         if(ret < 0){
 44                 perror("recv");
 45                 return 1;
 46         }
 47 
 48         printf("client say :  %s\n", data);
 49         close(sc);
 50         close(nfd);
 51 }
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <sys/socket.h>
  4 #include <string.h>
  5 #include <netinet/in.h>
  6 
  7 int main()
  8 {
  9                 int ret = 0;
 10                 int fd = 0;
 11                 int sc = 0;
 12                 unsigned char data[1024] = {0};
 13                 unsigned char arr[1024] = {0};
 14                 sc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 15                 if(sc < 0){
 16                         perror("socket");
 17                         return 1;
 18                 }
 19 
 20                 struct sockaddr_in mm;
 21                 mm.sin_family = AF_INET;
 22                 mm.sin_port = htons(9527);
 23                 mm.sin_addr.s_addr = inet_addr("192.168.31.154");;
 24 
 25                 ret = connect(sc, (struct sockaddr *)&mm, 16);
 26                 if(ret < 0){
 27                         perror("connect");
 28                         return 1;
 29                 }
 30                 struct sockaddr_in gg;
 31         gg.sin_family = AF_INET;
 32         gg.sin_port = htons(9527);
 33         gg.sin_addr.s_addr = inet_addr("192.168.31.238");;
 34 
 35         ret = bind(sc, (struct sockaddr *)&gg, 16);
 36         if(ret < 0){
 37                 perror("bind");
 38                 return 1;
 39         }
 40 
 41         ret = listen(sc, 10);
 42         if(ret < 0){
 43                 perror("listen");
 44                 return 1;
 45         }
 46 
 47          struct sockaddr_in nfd;
 48         int nfd_len = 0;
 49         fd = accept(sc, (struct sockaddr *)&nfd, &nfd_len);
 50         if(ret < 0){
 51                 perror("accept");
 52                 return 1;
 53         }
 54                 while(1){
 55                 read(0, data, 1024);
 56 
 57                 ret = send(sc, data, 1024, 0);
 58                 if(ret < 0){
 59                         perror("send");
 60                         return 1;
 61                 }
 62                  ret = recv(fd, arr, 1024, 0);
 63         if(ret < 0){
 64                 perror("recv");
 65                 return 1;
 66         }
 67 
 68         printf("client say :  %s\n", arr);
 69 
 70                 }
 71 
 72 
 73                 close(sc);
 74 
 75 }

 

转载于:https://www.cnblogs.com/luoxiang/p/4079761.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值