我编写了一个TCP客户端/服务器程序来反转字符串,但结果部分正确.
客户:
#?include?<stdio.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<sys/types.h>
void main()
{
struct sockaddr_in server;
int sock;
char buffer[20];
printf("Enter a string :");
scanf("%s",buffer);
server.sin_family = AF_INET;
server.sin_port = 2000;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
sock = socket(AF_INET,SOCK_STREAM, 0);
connect(sock, (struct sockaddr*) &server, sizeof(server));
send(sock, buffer, sizeof(buffer), 0);
recv(sock, buffer, sizeof(buffer), 0);
printf("The reverse string is: %s",buffer);
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
服务器:
?#?include?<stdio.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<string.h>
void main()
{
struct sockaddr_in server, client;
char buffer[20], temp;
int n, sock, newsock, i, j;
sock = socket(AF_INET, SOCK_STREAM, 0);
server.sin_family = AF_INET;
server.sin_port = 2000;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
bind(sock, (struct sockaddr*) &server, sizeof(server));
listen(sock, 2);
n = sizeof(client);
new sock = accept(sock, (struct sockaddr*) &client, &n);
for(;;)
{
recv(newsock, buffer, sizeof(buffer), 0);
i = 0;
j = strlen(buffer) - 1;
while(i<j)
{
temp = buffer[i];
buffer[i] = buffer[j];
buffer[j] = temp;
i++;
j--;
}
send(newsock, buffer, sizeof(buffer), 0);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我运行它并假设我输入字符串为"你好,你好吗"但结果只是"olleh"并且跳过句子的其余部分.我在这里错过了什么吗?