TCP实验报告

  • 格式:docx
  • 大小:169.97 KB
  • 文档页数:14

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《—计算机网络—》

TCP通信实验报告

姓名:

班级:

学号:

指导老师:

浙江理工大学信息电子学院

二○一四年十二月

一、实验目的、

利用c#编写异步tcp通讯程序,掌握socket语句的用法

二、实验内容

TCP实现一对一单人聊天,编程实现一个聊天室系统。该系统首先必须设立服务器,建立完成后必须建立与服务器的连接。建立成功后可以接收客户端输入的信息。该系统包括客户端和服务器端两部分。用户通过客户端发送消息。

服务器端在收到消息后,显示在主界面上实验报告要求有实现过程的流程图,对主要的函数及其参数给予说明,要有实现过程的主要程序段,并对各段程序的功能及作用进行说明

三、实验代码

1.server端

using System;

using System.Collections.Generic;

using ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using ;

using .Sockets;

using System.IO;

using System.Threading;

namespace frmAsyncTcpServer

{

public partial class TCPServer : Form

{

// 申明变量

private const int Port = 51388;

private TcpListener tcpLister = null;

private TcpClient tcpClient = null;

IPAddress ipaddress;

private NetworkStream networkStream = null;

private BinaryReader reader;

private BinaryWriter writer;

// 申明委托

// 显示消息

private delegate void ShowMessage(string str);

private ShowMessage showMessageCallback;

// 显示状态

private delegate void ShowStatus(string str);

private ShowStatus showStatusCallBack;

// 清空消息

private delegate void ResetMessage();

private ResetMessage resetMessageCallBack;

public TCPServer()

{

InitializeComponent();

// 显示消息

showMessageCallback = new ShowMessage(showMessage);

// 显示状态

showStatusCallBack = new ShowStatus(showStatus);

// 重置消息

resetMessageCallBack = new ResetMessage(resetMessage); ipaddress = IPAddress.Loopback;

tbxserverIp.Text = ipaddress.ToString();

tbxPort.Text = Port.ToString();

}

// 显示消息

private void showMessage(string str)

{

lstbxMsgView.Items.Add(tcpClient.Client.RemoteEndPoint); lstbxMsgView.Items.Add(str);

lstbxMsgView.TopIndex = lstbxMsgView.Items.Count - 1;

}

// 显示状态

private void showStatus(string str)

{

toolStripStatusInfo.Text = str;

}

// 清空消息

private void resetMessage()

{

tbxMsg.Text = string.Empty;

tbxMsg.Focus();

}

private void toolTip1_Popup(object sender, PopupEventArgs e)

{

}

private void TCPServer_Load(object sender, EventArgs e)

{

}

private void label1_Click(object sender, EventArgs e)

{

}

private void btnStart_Click(object sender, EventArgs e)

{

tcpLister = new TcpListener(ipaddress, Port);

tcpLister.Start();

// 启动一个线程来接受请求

Thread acceptThread = new Thread(acceptClientConnect);

acceptThread.Start();

}

private void acceptClientConnect()

{

statusStripInfo.Invoke(showStatusCallBack, "正在监听");

Thread.Sleep(1000);

try

{

statusStripInfo.Invoke(showStatusCallBack, "等待连接");

tcpClient = tcpLister.AcceptTcpClient();

if (tcpLister != null)

{

statusStripInfo.Invoke(showStatusCallBack, "接受到连接"); networkStream = tcpClient.GetStream();

reader = new BinaryReader(networkStream);

writer = new BinaryWriter(networkStream);

}