TCP实验报告
- 格式:docx
- 大小:169.97 KB
- 文档页数:14
《—计算机网络—》
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);
}