第一范文网 - 专业文章范例文档资料分享平台

通信原理实验报告

来源:用户分享 时间:2025/5/29 5:18:16 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

关键代码示例:

服务器端: // server.cpp : 实现文件 //

#define _CRT_SECURE_NO_WARNINGS

#include \ #include \通信实验.h\ #include \ #include \ #include #include

#pragma comment(lib,\) static int num = 0; // server 对话框

IMPLEMENT_DYNAMIC(server, CDialogEx)

server::server(CWnd* pParent /*=NULL*/) { }

server::~server() { }

void server::DoDataExchange(CDataExchange* pDX) { }

BEGIN_MESSAGE_MAP(server, CDialogEx)

ON_BN_CLICKED(IDC_BUTTON1, &server::OnBnClickedButton1) ON_WM_TIMER()

CDialogEx::DoDataExchange(pDX); : CDialogEx(IDD_DIALOG1, pParent)

END_MESSAGE_MAP() // server 消息处理程序

void server::OnBnClickedButton1() {

char sendBuf[100];//发送至客户端的字符串 char recvBuf[100];//接受客户端放回的字符串 // TODO: 在此添加控件通知处理程序代码 //SetTimer(1, 50000, NULL); int err;//错误信息 int len;

if (err != 0) { } /*

确认WinSock DLL支持2.2 */

if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { }

//定义服务器端socket

sockServer = socket(AF_INET, SOCK_STREAM, 0); //设置服务器端socket

addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//本机IP addrServer.sin_family = AF_INET; addrServer.sin_port = htons(6000); //将服务器socket绑定在本地端口

bind(sockServer, (SOCKADDR *)&addrServer, sizeof(SOCKADDR)); //Listen监听端口

listen(sockServer, 5);//5为等待连接数目 printf(\服务器已启动:\\n监听中...\\n\); len = sizeof(SOCKADDR);

//accept会阻塞进程,直到有客户端连接上来为止

sockClient = accept(sockServer, (SOCKADDR*)&addrClient, &len); //当客户端连接上来时,拼接字符串

sprintf(sendBuf, \欢迎 ip:%s 的用户连接,发送成功,欢迎使用\\n\,

//启动错误

WSACleanup();//终止WinSock 2 DLL的使用 return;

//启动错误,程序结束 return;

//配置Windows Socket版本

wVersinRequested = MAKEWORD(2, 2); //初始化Windows Socket

err = WSAStartup(wVersinRequested, &wsaData); WSADATA wsaData;//winsock结构体 WORD wVersinRequested;//winsock版本 SOCKET sockServer;//服务器端Socket SOCKADDR_IN addrServer;//服务器端地址 SOCKET sockClient;//客户端Socket SOCKADDR_IN addrClient;//客户端地址

inet_ntoa(addrClient.sin_addr)); }

//向客户端发送字符串

send(sockClient, sendBuf, strlen(sendBuf) + 1, 0); //获取客户端返回的数据

recv(sockClient, recvBuf, 100, 0); //打印客户端返回的数据 CString text; text = recvBuf;

SetDlgItemText(IDC_EDIT1, text); //关闭socket

closesocket(sockClient);

客户端:

#include #include

#pragma comment(lib, \) #include \ #include \通信实验.h\ #include \ #include \ // client 对话框

IMPLEMENT_DYNAMIC(client, CDialogEx) client::client(CWnd* pParent /*=NULL*/) { }

client::~client() { }

void client::DoDataExchange(CDataExchange* pDX) { }

CDialogEx::DoDataExchange(pDX); : CDialogEx(IDD_DIALOG2, pParent)

BEGIN_MESSAGE_MAP(client, CDialogEx)

// client 消息处理程序

void client::OnBnClickedButton1() {

if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {

// 启动错误,程序结束 WSACleanup(); if (err != 0) { }

return;

err = WSAStartup(wVersionRequested, &wsaData); wVersionRequested = MAKEWORD(2, 2); WSADATA wsaData; WORD wVersionRequested;

SOCKET sockClient; // 客户端 Scoket SOCKADDR_IN addrServer; // 服务端地址 int nLength = text.GetLength();

int nBytes = WideCharToMultiByte(CP_ACP, 0, text, nLength, NULL, 0, NULL, NULL); char* message = new char[nBytes + 1]; memset(message, 0, nLength + 1);

WideCharToMultiByte(CP_OEMCP, 0, text, nLength, message, nBytes, NULL, NULL); message[nBytes] = 0; int err;

char recvBuf[100];

// TODO: 在此添加控件通知处理程序代码 char* ip1 = \; char* ip2 = \; CString text;

GetDlgItemText(IDC_EDIT1, text);

ON_BN_CLICKED(IDC_BUTTON1, &client::OnBnClickedButton1) END_MESSAGE_MAP()

} }

return;

// 新建客户端 scoket

sockClient = socket(AF_INET, SOCK_STREAM, 0); // 定义要连接的服务端地址

addrServer.sin_addr.S_un.S_addr = inet_addr(ip1);// 目标IP (175.0.170.28是本机地址) addrServer.sin_family = AF_INET; // 协议类型是INET addrServer.sin_port = htons(6000);// 连接端口1234

// 让 sockClient 连接到 服务端

connect(sockClient, (SOCKADDR *)&addrServer, sizeof(SOCKADDR)); // 发送数据到服务端

send(sockClient, message, strlen(message) + 1, 0); // 从服务端获取数据

recv(sockClient, recvBuf, 100, 0); // 打印数据 text = recvBuf;

SetDlgItemText(IDC_EDIT2, text); // 关闭socket

closesocket(sockClient); WSACleanup();

// 定义要连接的服务端地址二

addrServer.sin_addr.S_un.S_addr = inet_addr(ip2);// 目标IP addrServer.sin_family = AF_INET; // 协议类型是INET addrServer.sin_port = htons(6000);// 连接端口1234

// 让 sockClient 连接到 服务端

connect(sockClient, (SOCKADDR *)&addrServer, sizeof(SOCKADDR)); // 发送数据到服务端

send(sockClient, message, strlen(message) + 1, 0); // 从服务端获取数据

recv(sockClient, recvBuf, 100, 0); // 打印数据 text = recvBuf;

SetDlgItemText(IDC_EDIT2, text); // 关闭socket

closesocket(sockClient); WSACleanup();

搜索更多关于: 通信原理实验报告 的文档
通信原理实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c003ds3b07p1lh1d7s0l19lpyv23wp8008l6_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top