网络通信简单代码(TCP)

来源:互联网 发布:centos搭建vpn网速慢 编辑:程序博客网 时间:2024/06/06 05:50

服务器端程序实现步骤:
1.创建监听套接字(买一部只能接电话的手机)
2.给套接字绑定(IP)地址(相当于给手机上号)
3.将套接字设置为监听状态(开机,将手机设置为待机)
4.接受客户端连接请求(相当于接受来电请求)
5.收发数据(相互通信)
6.断开连接(挂机)
456|456|456|456|456(可重复执行)
7.关闭监听套接字(手机关机或飞行模式)

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>int main(){//买手机    int socket_listen=socket(AF_INET,SOCK_STREAM,0);//绑卡    struct sockaddr_in myaddr;    myaddr.sin_family=AF_INET;    myaddr.sin_addr.s_addr=INADDR_ANY;    myaddr.sin_port=htons(6666);    if(-1==bind(socket_listen,(struct sockaddr*)&myaddr,sizeof(myaddr)))    {        perror("bind");        exit(-1);    }//待机    listen(socket_listen,5);//接电话    int socket_conn=accept(socket_listen,NULL,NULL);//通话    char buf[100];    int ret;    ret=recv(socket_conn,buf,sizeof(buf),0);    if(ret>0)    {        buf[ret]='\0';        printf("客户端说:%s",buf);        strcpy(buf,"已收到您的信息\n");        send(socket_conn,buf,strlen(buf),0);    }    else    {        printf("连接已断开");    }//关电话    close(socket_conn);//关手机    close(socket_listen);    return 0;}

客户端
1.创建流套接字(买手机)
2.绑定地址(买卡,可省略)
(如果不进行显示绑定或绑定失败,操作系统会隐式绑定,一般是较大数)
3.连接服务器 (呼叫)
4.收发数据(通话)
5.断开连接(挂机)

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>int main(int argc,char** argv){    if(3!=argc)    {        printf("参数有误\n");        exit(-1);    }//买手机    int socket_conn=socket(AF_INET,SOCK_STREAM,0);//绑卡    struct sockaddr_in myaddr;    myaddr.sin_family=AF_INET;    myaddr.sin_addr.s_addr=INADDR_ANY;    myaddr.sin_port=htons(1234);    if(-1==bind(socket_conn,(struct sockaddr*)&myaddr,sizeof(myaddr)))    {        perror("bind");        exit(-1);    }//打电话    struct sockaddr_in ser_addr;    ser_addr.sin_family=AF_INET;    ser_addr.sin_addr.s_addr=inet_addr(argv[1]);    ser_addr.sin_port=htons(atoi(argv[2]));    if(-1==connect(socket_conn,(struct sockaddr*)&ser_addr,sizeof(ser_addr)))    {        perror("connect");        exit(-1);    }//收发消息    char buf[100];    int ret;    strcpy(buf,"cmz,1701\n");    ret=send(socket_conn,buf,strlen(buf),0);    if(ret>0)    {        ret=recv(socket_conn,buf,sizeof(buf),0);        buf[ret]='\0';        printf("服务器回复说:%s",buf);    }    else    {        printf("连接已断开\n");    }//挂电话    close(socket_conn);    return 0;}
原创粉丝点击