您的位置 首页 韩国服务器

服务器回射echo程序 是什么意思

下面将实现一个简单的TCP回射服务器,即从客户端收到什么数据,就发送什么数据。

[cpp] view plain copy

#include <stdio.h>

#include <string.h>

#include <unistd.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <stdlib.h>

#define BUFFER_SIZE 1024

int main(int argc, char** argv)

{

if(argc != 2)

{

printf(\”Usage:\\n%s <port>\”, argv[0]);

return 0;

}

struct sockaddr_in myAddr, clientAddr;

int socketFd, clientFd;

unsigned int clientAddrLen = sizeof(clientAddr);

int receivedLength;

char buffer[BUFFER_SIZE];

memset(&clientAddr, 0, sizeof(clientAddr));

memset(&myAddr, 0, sizeof(myAddr));

myAddr.sin_family = AF_INET;

myAddr.sin_port = htons(atoi(argv[1]));

myAddr.sin_addr.s_addr = htonl(INADDR_ANY);

socketFd = socket(AF_INET, SOCK_STREAM, 0);

bind(socketFd, (struct sockaddr*)&myAddr, sizeof(myAddr));

listen(socketFd, 5);

clientFd = accept(socketFd, (struct sockaddr *)&clientAddr, &clientAddrLen);

receivedLength = recv(clientFd, buffer, BUFFER_SIZE, 0);

buffer[receivedLength] = \’\\0\’;

printf(\”Received a message from %s:%u:\\n%s\\n\”

, inet_ntoa(clientAddr.sin_addr)

, ntohs(clientAddr.sin_port),buffer);

send(clientFd, buffer, receivedLength, 0);

close(clientFd);

close(socketFd);

return 0;

}

假设这个程序的名字是TcpServer,在编译好的可执行文件的目录下,输入:./TcpServer 2333启动服务器程序

然后使用netcat来向它发起来接:nc 127.0.0.1 2333

在netcat里输入一些字符,按回车以后,可以在TcpServer的输出中看到收到的数据,在netcat里可以看到服务器返回的数据。

也可以和《Linux网络编程(1)》里面的程序相互测试一下效果。

关于作者: 天猫服务器

热门文章

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注