最后更新:2022-04-24 00:08:45 手机定位技术交流文章
因特网是因特网程序员的重要资源。虽然MFC包括自己的网络编程班,但使用这些班不是个好主意。下面的代码是MFC而不是MFC的代码。然而,为了今后有所改进,最好从头开始。我看过两三次基本原理大概知道怎么回事,但总体理解挺难的,敲敲代码 只能用和教科书一样的方式完成。未来,如何让这两个装置 彼此交谈。如何发送图片视频..学习进度还是好慢郁闷
TCP/IP服务器代码一:
#pragma 批注 (lib,'ws2_32. / 使用 WinSock 库的函数装入此动态链接库 。
#include<WinSock2.h> //因为要使用WinSock库中的函数
#include<stdio.h> //输入输出流
#include
using namespace std;
void main()
{
cout<<“服务器”;
- - - - - - - - - - - - - - - - - - - - - - - - - - -
WORD wVERSION 请求 ;/ 保存 WinSock 图书馆的版本号 。这不是 C++ 标准的类型 。这是微软SDK的那种。WORD是一字不差的。这是一个双字节( 16 位) 的无符号整数 。它表示范围为065535。
WSADATA wsaData;// 存储 Windows 仓库初始化数据
int err;
wVersionRequested = MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&wsaData);//加载套接字库,成功返回0
if(err!=0)
return;
如果(LOBYTE)Wsadata.我不知道你在说什么, wVersion! ==若版本不对应,要终止 Socket 的使用, 请使用 WSACleanup 函数 。
{
WSACleanup();
return;
}
- - - - - - - - - - - - - - - - - - - - - - - - - - -
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
参数:AF_INET地址是家庭(在这种情况下,只有AF_INET或PF_INET)视窗对两者没有区别,SOCK_STREAM是根据TCP/IP(因此这是SOCK_STREAM)产生的。
/ 0 (根据地址格式和套接字类型选择相关协议)
/ / / / / / / / / / / / / / / / / / / / / / / / / /
SOCKADDR_IN addrSrv;
//struct sockaddr_in
//{
处理家庭AF_INNET;//短 sin_ family
/ 未签名的短端端口; / / 将分配到软件包的端口
/ 以_addr sin_addr; / 主机的 IP 地址 (32-bit IPv4) 建立
// 填充使袜子和袜子结构长度相同并成功返回 0。
//};
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
htonl 函数将 INADR_ANY 值更改为网络字节顺序。 htonl 函数将主机字节的 u- long type 值翻译为 TCP/IP 字节顺序 。
将数据传送或接收到指定给当地系统的任何IP地址。 当有许多带有多个IP的网页卡时,INADR_ANY可以简化程序。
addrSrv.sin_family=AF_INET;
我不知道你在说什么, ArdrSrv.sin_port=htons (600); / 要使用大于1024的端口 。 htons 函数将主机字节命令中的 u_ sort type 值翻译为 TCP/IP 网络字节命令 。
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
/ 创建包件并将其绑在本地地址和端口上。 参数( 设置受约束、 字符串本地地址信息、 地址结构长度) 。
准备聆听客户的请求
听( sockSrv, 5); / 参数( 设置词描述符, 这里的缓存为 5 ) (等待连接队列最长长度 )
SOCKADD_IN addrCliet;/ 用于接收客户的通讯信息 SOCKADD_IN addrCliet;/ 用于接收客户的通讯信息
/ 在援引接受的第三个功能之前,必须提供一个起始值,即SOCKADD_IN = SOCKADD_IN (或, SOCKADD?) 结构的长度
while(1)
{
/我们正在等待客户的查询。
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
/ 参数(设置用于监听状态的字词描述符,使用监听功能保存IP地址和端口信息,以便在客户开始与服务器连接时建立连接,返回受保护地址信息的时间长度)
char sendBuf[100];
Springf( sendBuf, “ 向客户端发送的信息 ”, inet_ entoa (addrCliet)( sin_address) );
/ sprintf 将准备的数据打印为字符串缓冲。 格式化客户端的地址, 并将其置于 SendBuff 字符值中 。
/ind_entoa 转换为_addr 结构类型参数,以小数表示到 IP 地址字符串。
另一方面, 内部_ addr 翻译字符串( IP 地址以小数格式, 例如, 翻译为适合给 S_ addr 的 u_ long 类型 的值)
/ - - 发送数据 - -
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
/ 添加一个额外的字节,以便接收者在收到数据后在数据字符串中附加一个结束符号。
- - - - - - - - - - - - - - - - - - - - - - - - - - -
char recvBuf[100];
recv(sockConn,recvBuf,strlen(sendBuf)+1,0);
/ 打印收到的数据
printf("%s ",recvBuf);
- - - - - - - - - - - - - - - - - - - - - - - -
关闭已有连接( SockConn);/ 关闭已有连接
如果情况不是死循环,在使用屏幕套件之后必须关闭监听,并采用WSACleanup方法结束套接字库的使用。
}
}
TCP/IP 客户法第2号
#pragma comment(lib, “ws2_32.lib”)
#include<WinSock2.h>
#include<stdio.h>
#include
#include
using namespace std;
void main()
{
cout<<“客户端”;
- - - - - - - - - - - - - - - - - - - - - - - - - - -
WORD wVERSION 请求 ;/ 保存 WinSock 图书馆的版本号 。这不是 C++ 标准的类型 。这是微软SDK的那种。WORD是一字不差的。这是一个双字节( 16 位) 的无符号整数 。它表示范围为065535。
WSADATA wsaData;// 存储 Windows 仓库初始化数据
int err;
wVersionRequested = MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&wsaData);//加载套接字库,成功返回0
if(err!=0)
return;
如果(LOBYTE)Wsadata.我不知道你在说什么, wVersion! ==若版本不对应,要终止 Socket 的使用, 请使用 WSACleanup 函数 。
{
WSACleanup();
return;
}
- - - - - - - - - - - - - - - - - - - - - - - - - -
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
/ - - 向服务器发送连接请求 -
/ 配置服务器以接受连接 。
SOCKADDR_IN addrSrv;
我不知道你在说什么,ArdrSrv,我不知道你在说什么,sin_addr.S-un.S_addr=inet_addr (),//如果服务器和客户端都可以在当地访问,并且可以使用本地环地址
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
- - - - - - - - - - - - - - - - - - - - - - - - - - -
char recvBuf[100];
recv(sockClient,recvBuf,100,0);
printf("%s ",recvBuf);
- - - - - - - - - - - - - - - - - - - - - - - - - - -
string sendBuf;
while(’ '!=cin.peek())
{
cin>>sendBuf;
send(sockClient,sendBuf.c_str(),strlen(sendBuf.c_str())+1,0);
send(sockClient,“22”,strlen(“22”)+1,0);
}
- - - - - - - - - - - - - - - - - - - - - - - -
closesocket(sockClient);
WSACleanup();
}
UNDP/IP部分不正确, 代码没有明显不同, 也没有多少解释。
本文由 在线网速测试 整理编辑,转载请注明出处。