在编写整个系统过程中参考了无数csdn的文章,我,,,,找不过来,如有侵权联系我我设私密就好,这个是我自己学习用的谢谢各位csdn的大佬
SOCKET编程
这一部分是整个编程的基础,所谓网络通信就是在实现socket链接,如何建立socket链接也就变得尤为重要。
个人认为建立socket链接主要就是一个打电话的过程,在这里不推荐大家使用MFC自己打包的CSOCKET,因为我搞了半天也没有搞懂它的的阻塞机制。下面就为大家介绍一下socket的通信机制。
socket通信分为两部分,客户端和服务器
首先是服务端的代码
当然就分为三个过程
1.买电话
WSAData wsaData;
if (0 != WSAStartup(MAKEWORD(1, 1), &wsaData))
{
return 0;
}
if (1 != LOBYTE(wsaData.wVersion) ||
1 != HIBYTE(wsaData.wVersion))
{
// 终止对套接字库的使用
WSACleanup();
return 0;
}
SOCKET sockListen;
以上就是使用了socket字库和用系统提供的socket类买了一部属于自己的可供通信的手机。
2.插入电话卡,并放到有信号的地方
sockListen = socket(AF_INET, SOCK_STREAM, 0);
if (sockListen < 0)
{
return 0;
}
SOCKADDR_IN addrSrv;
addrSrv.sin_family = AF_INET;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_port = htons(9908);
int res = bind(sockListen, (SOCKADDR *)&addrSrv, sizeof(SOCKADDR));
//插入电话卡
if (res < 0)
{
this->MessageBoxW(L"绑定失败");
return 0;
}
listen(sockListen, 10); //设置监听模式,将电话接入信号网
3.开启监听模式,并接受所有来访的用户,建立链接响应
res = accept(sockListen, (SOCKADDR *)&addr_conn, 0);//就是相当于原来的开辟空间来存放
if (res > 0)
{
AfxMessageBox(L"有客户端接入yyj控制系统");
}
其次便是客户端的代码
1.同样也是买电话,拨打电话,这里记录一下IP和端口
所谓IP就是可以和你的电脑所在IP链接,而端口则是一个识别程序的代号,因为你的电脑里说实话服务器又千千万,如何链接到你写的这个服务器当中,用的就是端口。这里我们确定端口号为9908。socket链接机制提供了很多个链接端口2000以下千万不要用。因为会和已经被大公司买走的端口“打架”。
#define IPV4 "127.0.0.1"
#define PORT 9908
sockClient = socket(AF_INET, SOCK_STREAM, 0);
if (sockClient < 0)
{
return 0;
}
SOCKADDR_IN addrSrv;
addrSrv.sin_family = AF_INET;
addrSrv.sin_addr.S_un.S_addr = inet_addr(IPV4);
addrSrv.sin_port = htons(PORT);
int res = connect(sockClient, (SOCKADDR *)&addrSrv, sizeof(SOCKADDR));
if (res < 0)
{
this->MessageBox(L"连接失败");
OnOK();
return 0;
}
this->MessageBox(L"连接成功");
如此我们电话就买好了,也建立了相关链接。就可以进行下一步操作了,万里长征第一步