C-socket编程-客户端服务端通信模型

来源:互联网 发布:三国志11画质优化补丁 编辑:程序博客网 时间:2024/05/16 08:20

客户端服务端通信模型

服务端代码

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <arpa/inet.h>#include <sys/socket.h>#include <netinet/in.h>int main(){    //创建套接字    int serv_sock = socket(AF_INET,SOCK_STREAM,0);    //将套接字与IP,PORT绑定    //创建sokaddr_in结构体,并经行本地字节序和网络字节序的转换    struct sockaddr_in serv_addr;    memset(&serv_addr,0,sizeof(serv_addr));    serv_addr.sin_family = AF_INET;    serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1");    serv_addr.sin_port = htons(1234);    bind(serv_sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr));    //进入监听状态,等待用户发起请求    listen(serv_sock,20);    //接收客户端请求    struct sockaddr_in clnt_addr;    socklen_t clnt_addr_size =sizeof(clnt_addr);    int clnt_sock=accept(serv_sock,(struct sockaddr *)&clnt_addr,&clnt_addr_size);    char buf[4096];    int n,i;    while(1)    {        n=read(clnt_sock,buf,sizeof(buf));        for(i=0;i<n;i++)        {            buf[i]=toupper(buf[i]);        }        write(clnt_sock,buf,n);    }    //关闭套接字    close(clnt_sock);    close(serv_sock);    return 0;}

客户端代码

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>int main(){    //创建套接字    int sock = socket(AF_INET, SOCK_STREAM, 0);    //向服务器(特定的IP和端口)发起请求    struct sockaddr_in serv_addr;    memset(&serv_addr, 0, sizeof(serv_addr));  //每个字节都用0填充    serv_addr.sin_family = AF_INET;  //使用IPv4地址    serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");  //具体的IP地址    serv_addr.sin_port = htons(1234);  //端口    connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));    char buf[4096];    int n;    while(1)    {    fgets(buf,sizeof(buf),stdin);    write(sock,buf,strlen(buf));    n=read(sock,buf,sizeof(buf));    printf("Message form server: %s\n", buf);    }    //关闭套接字    close(sock);    return 0;}
0 0