vs中关于网络编程关于accept(),send(),recv()的几个函数的使用要注意的 几个小点

本文分享了作者在学习网络编程过程中的经验,特别是关于accept(), send()和recv()函数的使用心得,强调了正确创建和使用套接字的重要性。

 刚刚学习了网络编程的基础部分,才能把一个客服端和一个服务器能够连接起来,在这个过程中,遇到了许多bug,找到丧心病狂啊,其中标题中的三个函数我老是犯错误,因此想和大家分享一下。

1.accept()函数就是服务器来接受客户端发出的请求的信号,里面的具体结构我就不细述了,值得注意的一点是它的返回类型虽然是int型,但是它可以赋给SOCKRT clisesocket(下面有代码)稍微好理解一些

   SOCKET clientsocket = accept(seversocket, (sockaddr*)&caddr, &len);

 此时clientsocket 并不是没有作用了,就是能够用于服务器中最后一步用来接受里面的数据。在这边一开始老是分不清楚。

 int    m = recv(clientsocket, buff, len1, 0);
        if(m>0)
        {
            cout << "接受的内容是:" << buff << endl;
        }

2.send()函数就是客服端用来发送的给服务器的,

//就是创建一个 套接字,和服务端创建的套接字一模一样

      SOCKETsocketclient = socket(AF_INET, SOCK_STREAM, 0);//注释;;;;(1)
    cliaddr = { 0 };
    cliaddr.sin_family = AF_INET;
    cliaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.3");
    cliaddr.sin_port = htons(10087);// int len1= sizeof(cliaddr);

//进行通信的代码

while (1)
    {
        cout << "input:" << endl;
        memset(sendbuff, 0, 1024);//改一下
        cin >> sendbuff; int len2 = sizeof(sendbuff);
        r = send(socketclient, sendbuff, len2, 0);
        if ( r> 0)
        {
            cout << "发送成功" << endl;
        }
    }

我出错的就是就是自己定义一个  SOCKET client没有用注释(1)的 SOCKETsocketclient这样其实是大错特错的,因为都没有给他一些诸如AF_INET, SOCK_STREAM, 0此类的东西,怎么可能能够将你所想发送的东西发送出去呢一定要用注释1的套接字

我也是一个初学者,许多东西可能说的不好,也有可能说的不对,说的部队的地方请大家指出来,共同进步。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值