云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 上海大学 计算机网络 实验报告

上海大学 计算机网络 实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/12/10 15:46:13

页眉 private byte[] _receiveData = new byte[1024]; private string _username; private string _password; private bool _needPasswordl; private bool _passwordWrong; public TcpServerForm() {

InitializeComponent(); }

private void TcpReceiveForm_Load(object sender, EventArgs e) {

IPAddress[] addressList = Dns.GetHostAddresses(Dns.GetHostName()); foreach (IPAddress ip in addressList) {

if (ip.ToString().Length <= 15)

lbNativeIP.Items.Insert(0, ip.ToString()); }

btnDisconnect.Enabled = false; }

private void btnListen_Click(object sender, EventArgs e) {

_username = txtUserName.Text;

_password = txtPassword.Text; //设置用户名与密码

_server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//新建协议为tcp的socket

_server.Bind(new IPEndPoint(IPAddress.Any, 8000));//监听端口为8000 _server.Listen(5);//开始监听

_server.BeginAccept(new AsyncCallback(AcceptedConnection), _server);//异步调用,开始接收连接

this.lblStatus.Text = \开始监听...\;

9 / 22

页眉 btnListen.Enabled = false; txtUserName.Enabled = false; txtPassword.Enabled = false; _needPasswordl = true;

_passwordWrong = false;//处理逻辑 }

private void btnDisconnect_Click(object sender, EventArgs e) {

_client.Close(); _needPasswordl = true;

_server.BeginAccept(new AsyncCallback(AcceptedConnection), _server); this.lblStatus.Text = \开始监听...\; }

void AcceptedConnection(IAsyncResult iar) {

_client = ((Socket)iar.AsyncState).EndAccept(iar);//终止接收连接

this.lblStatus.Text = \连接到:\ + _client.RemoteEndPoint.ToString();//解析对方地址与端口 byte[] sendMessage = Encoding.Default.GetBytes(DateTime.Now.TimeOfDay + \请发送用户与密码\);//向客户端提出发送密码的请求

lbConnectLog.Items.Insert(0, \连接到:\ + _client.RemoteEndPoint.ToString()); _client.BeginSend(sendMessage, 0, sendMessage.Length, SocketFlags.None, new AsyncCallback(SentData), _client);//异步调用,消息发送完毕执行SentData btnDisconnect.Enabled = true; }

void ReceivedData(IAsyncResult iar) {

_client = (Socket)iar.AsyncState; int recv = 0; try {

10 / 22

页眉 recv = _client.EndReceive(iar); } catch {

ProcessDisconnection(); }//解析消息

if (recv == 0)//解析失败 {

_client.Close();

this.lblStatus.Text = \等待连接...\;

_server.BeginAccept(new AsyncCallback(AcceptedConnection), _server); return; }

string receiveMessage = Encoding.Default.GetString(_receiveData, 0, recv); this.lbMessage.Items.Insert(0,receiveMessage);//将消息放入消息列表 byte[] feedbackMessage; if(_needPasswordl) {

string receiveUsername = receiveMessage.Substring(receiveMessage.LastIndexOf(\) + 1, receiveMessage.IndexOf(\) - (receiveMessage.LastIndexOf(\) + 1));

string receivePassword = receiveMessage.Substring(receiveMessage.IndexOf(\) + 1, receiveMessage.Length - (receiveMessage.IndexOf(\) + 1)); if(receiveUsername == _username && receivePassword == _password) {

_needPasswordl = false; _passwordWrong = false;

feedbackMessage = Encoding.Default.GetBytes(DateTime.Now.TimeOfDay + \验证成功_\ + receiveMessage);

_client.BeginSend(feedbackMessage, 0, feedbackMessage.Length, SocketFlags.None, new AsyncCallback(SentData), _client);

11 / 22

页眉 return; } else {

this.lbConnectLog.Items.Insert(0, receiveUsername + \ + receivePassword + \验证失败\); feedbackMessage = Encoding.Default.GetBytes(DateTime.Now.TimeOfDay + \验证失败_\ + receiveMessage); _passwordWrong = true;

_client.BeginSend(feedbackMessage, 0, feedbackMessage.Length, SocketFlags.None, new AsyncCallback(SentData), _client); return; } }

feedbackMessage = Encoding.Default.GetBytes(DateTime.Now.TimeOfDay + \成功接收\ + receiveMessage);

_client.BeginSend(feedbackMessage, 0, feedbackMessage.Length, SocketFlags.None, new AsyncCallback(SentData), _client); }

void SentData(IAsyncResult iar) {

_client = (Socket)iar.AsyncState; int sent = _client.EndSend(iar); if (_passwordWrong) {

lbConnectLog.Items.Insert(0, \主动断开连接\ + _client.RemoteEndPoint.ToString()); _client.Close(); _needPasswordl = true;

_server.BeginAccept(new AsyncCallback(AcceptedConnection), _server);//重新开始接收新的连接

ProcessDisconnection();

12 / 22

搜索更多关于: 上海大学 计算机网络 实验报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

页眉 private byte[] _receiveData = new byte[1024]; private string _username; private string _password; private bool _needPasswordl; private bool _passwordWrong; public TcpServerForm() { InitializeComponent(); } private void TcpReceiveForm_Load(object sender, EventArgs e) { IPAddress[] addressList = Dns.GetHostAddresses(Dns.GetHostName()); foreach (IPAddress i

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com