23,121
社区成员
发帖
与我相关
我的任务
分享
#include <stdlib.h>
#include <stdio.h>
#include <strings.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#define SER_PORT 9877
#define MAXLINE 4096
void dg_cli(FILE *fp, int sockfd, const struct sockaddr *pservaddr, socklen_t servlen)
{
int n;
char sendline[MAXLINE], recvline[MAXLINE+1];
if(connect(sockfd, (struct sockaddr*)pservaddr, servlen) != 0) {
printf("connect error: %s\n", strerror(errno));
exit(1);
}
while(fgets(sendline, MAXLINE, fp) != NULL) {
n = strlen(sendline);
if(write(sockfd, sendline, strlen(sendline)) != n) {
printf("write error : %s", strerror(errno));
exit(1);
}
n = read(sockfd, recvline, MAXLINE); //在这里没有返回错误
if(n < 0)
printf("read error : %s", strerror(errno));
printf("after n %d\n", n);
recvline[n] = 0;
fputs(recvline, stdout);
}
}
int main()
{
int sockfd;
struct sockaddr_in servaddr;
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
inet_pton(AF_INET, "192.168.1.2", (void*)&servaddr.sin_addr);
servaddr.sin_port = htons(SER_PORT);
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
dg_cli(stdin, sockfd,(struct sockaddr*)&servaddr, sizeof(servaddr));
return 0;
}