刚刚学习了网络编程的基础部分,才能把一个客服端和一个服务器能够连接起来,在这个过程中,遇到了许多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的套接字
我也是一个初学者,许多东西可能说的不好,也有可能说的不对,说的部队的地方请大家指出来,共同进步。
本文分享了作者在学习网络编程过程中的经验,特别是关于accept(), send()和recv()函数的使用心得,强调了正确创建和使用套接字的重要性。
172万+

被折叠的 条评论
为什么被折叠?



