Слияние кода завершено, страница обновится автоматически
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<sys/wait.h>
#include <arpa/inet.h>
#include <unistd.h>
#define DEST_PORT 8811//目标地址端口号
#define DEST_IP "127.0.0.1"/*目标地址IP,这里设为本机*/
int main(){
int sockfd;
struct sockaddr_in dest_addr;
char sendBuf[200],recvBuf[200];
pid_t pid;
sockfd=socket(AF_INET,SOCK_STREAM,0);/*建立socket*/
if(sockfd==-1){
perror("创建socket失败");
return 0;
}
//参数意义见上面服务器端
dest_addr.sin_family=AF_INET;
dest_addr.sin_port=htons(DEST_PORT);
dest_addr.sin_addr.s_addr=inet_addr(DEST_IP);
bzero(&(dest_addr.sin_zero),8);
if(connect(sockfd,(struct sockaddr*)&dest_addr,sizeof(struct sockaddr))==-1){//连接方法,传入句柄,目标地址和大小
perror("连接服务器错误");
return 0;
}
pid = fork();
if (pid < 0) {
perror("创建子进程失败");
exit(0);
} else if (pid) {
while (1) {
printf("Client:");
fgets(sendBuf,200,stdin);
if (send(sockfd,sendBuf,strlen(sendBuf),0) != strlen(sendBuf)) {
perror("发送错误");
exit(0);
}
memset(sendBuf,0,200);
}
} else {
while (1) {
if (recv(sockfd,recvBuf,200,0) == -1) {
perror("获取数据错误");
exit(0);
}
printf("\n服务器:%s\n",recvBuf);
memset(recvBuf,0,200);
}
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )