0
点赞
收藏
分享

微信扫一扫

WinSocket2.h网络编程基础C/C++

//发送端基于传统C API开发

#include <iostream>

#include <WinSock2.h>

using namespace std;

#define mian main

#pragma comment(lib,"ws2_32.lib")

enum { PORT = 0x3512};//与接收端绑定的端口一致

int main()

{

WSADATA wa;

WSAStartup(0x0202, &wa);//初始化DLL

SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);//参数一为地址族,SOCK_DGRAM为UDP协议创建SOCKET对象

if (INVALID_SOCKET == sock)//

{

 cout << "初始化错误" << endl;

}

sockaddr_in sa = { AF_INET };//系统随机分配端口

int i = sizeof(sa);

if (bind(sock, (sockaddr*)&sa, i))//将socket句柄和地址端口信息绑定

{

 cout << "绑定出错" << endl;

}

sockaddr_in sa1 = { AF_INET ,htons(PORT),{127,0,0,1} };//保存接收端的IP和端口信息

char s[256];

int n;

while (1)

{

 cin >> s;

 sendto(sock, s, strlen(s), 0, (sockaddr*)&sa1, sizeof(sa1));//向端口信息为(sockaddr*)&sa1的目的发送消息

}

return 0;

}





//MFC封装的socket类,接收端,可以同事由多个

#include <afxsock.h>

#include <iostream>

using namespace std;

enum { PORT = 0x3512 };//发送端通过该端口来访问接收端

int main()

{

CSocket sock;

AfxSocketInit();//初始化DLL

if (!sock.Create(PORT, SOCK_DGRAM))//端口一定要让发送端知道

{

 cout << WSAGetLastError() << endl;

}

char s[256];  

UINT nPort;

CString sIP;

//sockaddr_in sa;

//int len = sizeof(sa);

do

{

 int n = sock.ReceiveFrom(s, sizeof(s),sIP,nPort);//用CString接收发送端的IP端口信息

 //int n = sock.ReceiveFrom(s, sizeof(s), (SOCKADDR*)&sa, &len);//用sockaddr_in对象接收发送端的IP端口信息

 s[n] = 0;

 cout << sIP << "-";

 cout << nPort << ":";

// cout << inet_ntoa(sa.sin_addr) << "-";//输出IPv4地址字符串

// cout << htons(sa.sin_port) << ":";//将大端换小端输出PORT

 cout << s << endl;

} while (*s);

return 0;

}

举报

相关推荐

0 条评论