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;

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值