电子与信息工程系
实验报告
实验名称Windows Socket 编程
(Duplex-talk改进)课程名称计算机网络
姓名张建佳学号U201013086
日期20120403 地点南一楼东203
成绩教师徐晶
1.实验目的
1.掌握网络应用程序的开发方法;
2.掌握Client/ Server 结构软件的设计与开发方法
3.掌握Socket 机制的工作原理
2.实验环境
操作系统:Windows 7
开发环境:Visual Studio 2010,VC6
3.实验内容与结果
2_ex.进一步修改duplex-talk程序,实现server和client之间可以任意收发信息。
(1)程序整体功能
为了体现消息收发的平等性,我将client和server整合为一体,即程序既可以当作server 响应连接,也可以当作client发起连接。
连接建立后,程序能够随意向对方发送信息而无需等到接收对方发来的信息。
(2)程序组成及各模块/函数功能
UI设计
buttonConnect点击发起/终止连接
buttonSend点击发送数据
textboxDialog显示用户对话
textboxSend显示待发送信息
labelStatus显示程序当前状态
各模块功能
Socket server; //server端socket
Socket client; //client端socket
Thread threadListen; //监听连接请求的线程
Thread threadConnect; //发起连接的线程
Thread threadDisconnect; //终止连接的线程
Thread threadReceive; //接收连接的线程
Form FormConnect; //输入目的主机的IP地址的窗口
private void Listen(); //监听连接请求
private void Disconnect(); //终止连接
private void Connect(); //发起连接
private void Send(); //发送信息
private void Receive(); //接受信息
private void SendDisconnectMsg(); //发送终止连接的信息
private void ChangeUI(); //改变UI的属性
(3)重要的数据结构,模块/函数算法;
byte[] byteSend; byte[] byteReceive; //发送/接收信息的字符数组,第一位储存控制信息,0表示终止连接,1表示正常的信息发送。
private void Listen(); //配置好本地socket信息,等待连接。
连接成功后启动threadReceive 进程接受数据。
private void Connect(); //对用户要求连接的目的IP地址合法性进行检验,发起连接。
private void Disconnect(); //调用SendDisconnectMsg(),通知会话的对方终止连接,同时关闭自身连接。
private void Send(); //获取待发送信息,加上控制信息,打包发送。
private void Receive(); //接收信息流,分离提取出控制信息和会话信息,决定是否终止连接。
(4)程序清单(见附件)
(5)程序的运行和测试结果程序启动
连接建立成功server/client
收发信息server/client
终止连接server/client
4. 实验中的问题
同时运行多个实例会出现端口冲突问题,于是定义了默认端口和备用端口。
附件
1.
程序源代码
FormConnect.cs。