首页 > 其他 > 详细

c--socket通信TCP篇

时间:2018-09-06 19:08:24      阅读:246      评论:0      收藏:0      [点我收藏+]

https://www.cnblogs.com/ashen/p/4474360.html

#include <sys/socket.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 #include <stdio.h>
 5 #include <linux/in.h>  
 6 #include <sys/types.h>  
 7     
 8 #define PORT 7891
 9 
10 int main()
11 {
12     int socketfd,accsocfd;
13     struct sockaddr_in s_addr,r_addr;
14     socklen_t len; 
15     int recdata;
16     char buf[1024];
17     memset(buf,0x00,sizeof(buf));
18     //创建套接字
19     if(-1 == (socketfd = socket(AF_INET,SOCK_STREAM,0))){
20             printf("socketfd is created failed!\n");
21             return -1;        
22     }        ;    
23      printf("socket create success!\n"); 
24      
25     //将本地协议地址与sockfd绑定
26     memset(&s_addr,0x00,sizeof(s_addr));
27     s_addr.sin_family = PF_INET;
28     s_addr.sin_port = htons(PORT);
29     s_addr.sin_addr.s_addr = htons(INADDR_ANY);//inet_addr_any 一个服务器可能有多个网卡,随便从中选1个
30     if(-1 == bind(socketfd,(struct sockaddr*)&s_addr,sizeof(s_addr))){
31         printf("bind failed!\n");            
32         return -1;
33     }
34     printf("bind suc!\n");
35     
36     //监听本地端口
37     if(-1 == listen(socketfd,10)){
38         printf("listen failed!\n");
39         return -1;
40         }
41     printf("listen suc!\n");
42     
43     while(1){
44             len = sizeof(struct sockaddr);
45             accsocfd = accept(socketfd,(struct sockaddr *)&r_addr,&len);
46             if(-1 == accsocfd){
47                     printf("accept failed!\n");
48                     return -1;
49                 }
50                 printf("accept suc !\nServer get connect from %x port is %x",ntohl(r_addr.sin_addr.s_addr),ntohl(r_addr.sin_port));
51         
52         
53         //向客服端发送数据
54         if(-1 == write(accsocfd,"this is first data from sr!\n",50)){
55             printf("write failed!\n");
56             return -1;
57         }
58         printf("write suc!\n");
59         
60           
61          printf("*********************\n");
62 
63        char recvBuf[100];
64  
65     if(-1 ==recv(accsocfd, recvBuf, 100, 0)){
66             printf("recv failed!\n");
67             return -1;
68         }
69     printf("recv suc!\n");
70     printf("recvBuf  = [%s]\n",recvBuf);
71         printf("recvBuf len is = [%d]\n",strlen(recvBuf));
72         
73         close(accsocfd);
74         
75     }
76     close(socketfd);
77     return 0;
78 }
技术分享图片

//c.c

技术分享图片
#include<sys/socket.h>
#include<string.h>
#include<linux/in.h>
#include<sys/types.h>
#include<stdio.h>
#include<stdlib.h>
/*流程:

TCP:(面向连接、可靠)

服务器端 WSAStartup->socket->bind->listen->accept->recv/send->closesocket->WSACleanup
客户端:WSAStartup->socket->connect->recv/send->closesocket->WSACleanup
*/
#define PORT 7891
int main()
{
    int csocfd;
    int recdata;    
    char buf[1024];
    memset(buf,0x00,sizeof(buf));
    struct sockaddr_in mysockaddr;
    //创建套接字
    if(-1 == (csocfd = socket(PF_INET,SOCK_STREAM,0))){
            printf("csocfd failed!\n");
            return -1;
    }
    printf("csocfd suc!\n");
    
    //设置服务器的地址

    memset(&mysockaddr,0x00,sizeof(mysockaddr));
    mysockaddr.sin_family = PF_INET;
    mysockaddr.sin_port = htons(PORT);
    inet_pton(AF_INET,"172.19.230.113",&mysockaddr.sin_addr.s_addr);
//s_add.sin_addr.s_addr= inet_addr("172.19.230.113"); /* ip转换为4字节整形,使用时需要根据服务端ip进行更改 */  


    //connect to the sr
if(-1 == connect(csocfd,(struct sockaddr*)&mysockaddr,sizeof(mysockaddr))){
            printf("connect failed!\n");
            return -1;
        }
    printf("connect suc!\n");
    
    
    if(-1 == (recdata = read(csocfd,buf,sizeof(buf)))){
            printf("read failed!\n");
            return -1;
    }
    printf("read suc!\n");
    buf[recdata ] = ‘\0‘;
    printf("recdata  = [%s]\n",buf);
    printf("recdata len is = [%d]\n",recdata);
    
    
    //memcpy(sendbuf,"this is data from cl!\n",);
    if(-1 == send(csocfd, "this is data from cl!", 100, 0)){
            printf("send faile\n");
            return -1;
        }
    printf("send suc!\n");
    
    
    close(csocfd);
    
    
}
技术分享图片

c--socket通信TCP篇

原文:https://www.cnblogs.com/jukan/p/9600242.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!