一个很基础的tcp客户端和服务器代码。

01#include <stdio.h>
02#include <stdlib.h>
03#include <string.h>
04#include <sys/socket.h>
05#include <netinet/in.h>
06#include <arpa/inet.h>
07 
08//tcp客户端
09int main()
10{
11    //1. 准备socket
12    int sockfd=socket(PF_INET,SOCK_STREAM,0);
13    if(sockfd==-1)perror(""),exit(-1);
14    //2. 准备地址
15    struct sockaddr_in addr;
16    addr.sin_family = PF_INET;
17    addr.sin_port = htons(8888);       
18    inet_aton("127.0.0.1",&addr.sin_addr);
19    //3.连接
20    int res = connect(sockfd,
21        (struct sockaddr*)&addr, sizeof(addr));
22    if(res==-1)perror("连接失败"),exit(-1);
23    printf("连接成功\n");
24    //4.通信
25    send(sockfd, "Hello!服务器", 12, 0);  
26    char buf[100] = {};
27    recv(sockfd, buf, sizeof(buf), 0);
28    printf("服务说:%s\n", buf);
29    //5.关闭
30    close(sockfd);
31}

[2].[代码] tcp_server.c 

01#include <stdio.h>
02#include <stdlib.h>
03#include <string.h>
04#include <sys/socket.h>
05#include <netinet/in.h>
06#include <arpa/inet.h>
07#include <time.h>
08 
09//tcp服务器端
10int main()
11{
12    //1. 准备socket
13    int sockfd=socket(PF_INET,SOCK_STREAM,0);
14    if(sockfd==-1)perror(""),exit(-1);
15    //2. 准备地址
16    struct sockaddr_in addr;
17    addr.sin_family = PF_INET;
18    addr.sin_port = htons(8888);       
19    inet_aton("192.168.182.53",&addr.sin_addr);
20    //3.绑定
21    int res = bind(sockfd,
22        (struct sockaddr*)&addr, sizeof(addr));
23    if(res==-1)perror("绑定失败"),exit(-1);
24    printf("绑定成功\n");
25    //4.监听
26    res = listen(sockfd, 100); 
27    if(res==-1)perror("监听失败"),exit(-1);
28    printf("启动监听\n");
29    while(1){
30        //5.等待客户端连接
31        struct sockaddr_in fromaddr;
32        socklen_t len = sizeof(fromaddr);
33        int fd=accept(sockfd,
34            (struct sockaddr*)&fromaddr, &len);
35        //6.和客户端通信
36        //6.1接收客户端数据
37        char buf[100] = {};
38        if(recv(fd, buf, sizeof(buf),0)<=0)
39            perror("接收数据失败");
40        else{
41            printf("客户端%s说:%s\n",
42                inet_ntoa(fromaddr.sin_addr),buf);
43        }  
44        //6.2给客户端发数据
45        memset(buf, 0, sizeof(buf));
46        time_t cur;
47        time(&cur);
48        struct tm* cur_tm = localtime(&cur);
49        sprintf(buf,"%4d-%02d-%02d %02d:%02d:%02d",
50            cur_tm->tm_year+1900,
51            cur_tm->tm_mon+1,
52            cur_tm->tm_mday,
53            cur_tm->tm_hour,
54            cur_tm->tm_min,
55            cur_tm->tm_sec);
56        send(fd, buf, strlen(buf),0);
57        //7.关闭socket
58        close(fd);
59    }
60    close(sockfd);
61}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值