当前位置:必发365电子游戏 > 编程 > 回声客户端
回声客户端
2019-12-19

回音顾客端:

1.所谓“回声”,是指客户端向服务器发送一条数据,服务器再将数据形容再次回到给客户端,就疑似声音同样,遭受阻力物会被“反弹回去”。

2.顾客端也可以应用 write(卡塔尔国 / send(卡塔尔国 函数向服务器发送数据,服务器也得以利用 read(卡塔尔 / recv(卡塔尔(قطر‎ 函数采取数据

 

#必发365电子游戏,define BUF_SIZE 100

1.#起来的是预管理命令

2.#define是宏定义,在编写翻译预管理时,会对宏名举办宏代换/宏张开,正是替换掉

 

scanf("%s", bufSend);

1.scanf(卡塔尔国 读取到空格时感到三个字符串输入完成

2.足以采纳gets(卡塔尔(英语:State of Qatar)替换

echo_server.c

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define BUF_SIZE 100
int main(){
        //创建套接字
        int serv_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        //将套接字和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);  //端口
        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_si
ze);

        char buffer[BUF_SIZE];  //缓冲区
        int strLen = read(clnt_sock, buffer, BUF_SIZE);  //接收客户端发来的数据
        write(clnt_sock, buffer,sizeof(buffer));
        //关闭套接字
        close(clnt_sock);
        close(serv_sock);
        return 0;
}

 

echo_回声客户端。client.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define BUF_SIZE 100
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 bufSend[BUF_SIZE];
        printf("输入字符串: ");
        scanf("%s",bufSend);
        write(sock, bufSend,sizeof(bufSend));

        //读取服务器传回的数据
        char buffer[40];
        read(sock, buffer, sizeof(buffer)-1);

        printf("服务器返回: %sn", buffer);

        //关闭套接字
        close(sock);
        return 0;
}

效果:

必发365电子游戏 1

应用while(1卡塔尔国 让代码步向死循环,一向监听顾客端的恳求

echo_server.c

        while(1){
                int clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt
_addr_size);

                char buffer[BUF_SIZE];  //缓冲区
                int strLen = read(clnt_sock, buffer, BUF_SIZE);  //接收客户端发来的数
据
                write(clnt_sock, buffer,sizeof(buffer));
                //关闭套接字
                close(clnt_sock);
        }

echo_client.c

        while(1){
                //创建套接字
                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 bufSend[BUF_SIZE];
                printf("输入字符串: ");
                scanf("%s",bufSend);
                write(sock, bufSend,sizeof(bufSend));

                //读取服务器传回的数据
                char buffer[40];
                read(sock, buffer, sizeof(buffer)-1);

                printf("服务器返回: %sn", buffer);

                //关闭套接字
                close(sock);}

 效果:

必发365电子游戏 2

上一篇:没有了
下一篇:没有了