c语言socket 监听,c语言socket的一个比较怪的菜鸟问题

小弟接触C也没多久 今天调试个程序 发现个诡异的问题 !!

如果加上 printf("\n"); 程序就出问题 虽然编译也能通过,也能运行 但是就是客户端发送消息 服务端收不到

如果去掉 printf("\n"); 就神奇的好了 真是好奇怪 有老鸟有空帮忙看看吗

下面是服务端代码

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define SERVER_PORT 8000

#define MAXLINE 4096

int main() {

struct sockaddr_in serveraddr,clientaddr;

int sockfd,addr_len, confd ,len ,i;

char ipstr[128];

char buf[MAXLINE];

//socket create

sockfd = socket(AF_INET,SOCK_STREAM,0);

//初始化地址

bzero((struct sockaddr *)&serveraddr,sizeof(serveraddr)); //清零

serveraddr.sin_family = AF_INET; // iPv4

serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); //监听的IP地址 任何IP

serveraddr.sin_port = htons(SERVER_PORT); //监听端口

bind(sockfd,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); //绑定socket

//开启监听 并且设置最大连接数

listen(sockfd,128);//开启监听

while(1) {

//阻塞客户端请求

addr_len = sizeof(clientaddr);

confd = accept(sockfd,(struct sockaddr *)&clientaddr,&addr_len);

printf("client ip = %s:%d\n",

inet_ntop(AF_INET,&clientaddr.sin_addr.s_addr,ipstr,sizeof(ipstr)),

ntohs(clientaddr.sin_port));

//处理客户端请求

len = read(confd,buf,sizeof(buf));

i = 0;

while(i < len) {

buf[i] = toupper(buf[i]);

i++;

}

write(confd,buf,len);

printf("\n");

write(STDOUT_FILENO,buf,len);

printf("\n");

close(confd);

}

close(sockfd);

return 0;

}

下面是客户端代码

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define SERVER_PORT 8000

#define MAXLINE 4096

int main(int argc,char *argv[]) {

struct sockaddr_in serveraddr;

int confd ,len ,i;

char ipstr[] = "192.168.8.80";

char buf[MAXLINE];

if(argc < 2) {

printf("./client not message!\n");

exit(1);

}

confd = socket(AF_INET,SOCK_STREAM,0);

bzero(&serveraddr,sizeof(serveraddr));

serveraddr.sin_family = AF_INET;

inet_pton(AF_INET,ipstr,&serveraddr.sin_addr.s_addr);

serveraddr.sin_port = htons(SERVER_PORT);

//连接到服务器

connect(confd,(struct sockaddr *)&serveraddr,sizeof(serveraddr));

// 请求服务器处理数据

write(confd,argv[1],strlen(argv[1]));

len = read(confd,buf,sizeof(buf));

write(STDOUT_FILENO,buf,len);

//关闭socket

close(confd);

return 0;

}

感觉有时候好 有时候不好 真的好诡异

你可能感兴趣的:(c语言socket,监听)