通信原理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生学号实验课成绩
学生实验报告书
实验课程名称通信原理
开课学院计算机科学与技术学院
指导教师姓名刘维
学生姓名陈鑫宇
学生专业班级软件工程1401
2015-- 2016学年第 2 学期
实验课程名称:______通信原理_________
}
server::~server()
{
}
void server::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(server, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON1, &server::OnBnClickedButton1)
ON_WM_TIMER()
END_MESSAGE_MAP()
// server 消息处理程序
void server::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//SetTimer(1, 50000, NULL);
int err;//错误信息
int len;
char sendBuf[100];//发送至客户端的字符串
char recvBuf[100];//接受客户端放回的字符串
SOCKET sockServer;//服务器端Socket
SOCKADDR_IN addrServer;//服务器端地址
SOCKET sockClient;//客户端Socket
SOCKADDR_IN addrClient;//客户端地址
WSADATA wsaData;//winsock结构体
WORD wVersinRequested;//winsock版本
//配置Windows Socket版本
wVersinRequested = MAKEWORD(2, 2);
//初始化Windows Socket
err = WSAStartup(wVersinRequested, &wsaData);
if (err != 0)
{
//启动错误,程序结束
return;
}
/*
确认WinSock DLL支持2.2
*/
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {
//启动错误
WSACleanup();//终止WinSock 2 DLL的使用
return;
}
//定义服务器端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", 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, "ws2_32.lib")
#include"stdafx.h"
#include"通信实验.h"
#include"client.h"
#include"afxdialogex.h"
// client 对话框
IMPLEMENT_DYNAMIC(client, CDialogEx)
client::client(CWnd* pParent/*=NULL*/)
: CDialogEx(IDD_DIALOG2, pParent)
{
}
client::~client()
{
}
void client::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(client, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON1, &client::OnBnClickedButton1)