Linux下的socket建立

今天调试了一上午的socket通讯,终于连接成功了,代码都是照抄刘同学的。我的客户端程序和服务器程序连接之后,接收数据出现问题,报错:Error: socket receive error!。开始以为是send和recv函数第二、三个参数有问题,原型

ssize_t send(int sockfd, const void *buf, size_t nbytes, int flags);

ssize_t recv(int sockfd, void *buf, size_t nbytes, int flags);

更改数次之后,仍然有问题,于是又在网上搜了一下别人的代码,终于发现是服务器端的这两个函数的第一个参数有问题。服务器端定义了两个文件描述符,int sock_fd = -1, client_fd = -1;调用accept函数时返回的client_fd 文件描述符连接到调用connect的客服端。传给accept的原始套接字没有关联到这个连接,而是继续保持可用状态并接受其他连接请求。accept函数原型int accept(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict len);

我的服务器代码如下:

int sock_fd = -1, client_fd = -1;


/** create socket **/
int create_socket(){
int ret = 0;
struct sockaddr_in addr, client_addr;
socklen_t length = sizeof(client_addr);

printf("Info: start create socket!\n");

sock_fd = socket(AF_INET, SOCK_STREAM, 0);
if(-1 == sock_fd){

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值