上海大学 计算机网络 实验报告 联系客服

发布时间 : 星期二 文章上海大学 计算机网络 实验报告更新完毕开始阅读e5093a47cd22bcd126fff705cc17552706225efa

页眉 return; }

_client.BeginReceive(_receiveData, 0, _receiveData.Length, SocketFlags.None, new AsyncCallback(ReceivedData), _client);//密码正确,开始接收消息 }

void ProcessDisconnection() {

this.lblStatus.Text = \已断开连接!重新监听...\; lbConnectLog.Items.Insert(0, \已经断开连接\); this.btnDisconnect.Enabled = false; }

private void txtUserName_TextChanged(object sender, EventArgs e) { }

private void txtPassword_TextChanged(object sender, EventArgs e) { }

private void lblUserName_Click(object sender, EventArgs e) { }

private void gnConnectInfo_Enter(object sender, EventArgs e) { }

private void lbMessage_SelectedIndexChanged(object sender, EventArgs e) { }

private void lbNativeIP_SelectedIndexChanged(object sender, EventArgs e) { }

private void lbConnectLog_SelectedIndexChanged(object sender, EventArgs e)

13 / 22

页眉 { } } }

TCP客户端:

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

using System.Threading.Tasks; using System.Windows.Forms; using System.Net;

using System.Net.Sockets; namespace TCP客户端 {

public partial class TcpClientForm : Form {

Socket _client;

byte[] _receivedData = new byte[1024]; public TcpClientForm() {

InitializeComponent(); }

private void btnConnect_Click(object sender, EventArgs e) {

14 / 22

页眉 this.lblStatus.Text = \连接中...\;

_client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//建立一个协议为TCP的socket

IPEndPoint iep = new IPEndPoint(IPAddress.Parse(this.txtIP.Text), 8000);//设置端口为8000 _client.BeginConnect(iep, new AsyncCallback(Connected), _client);//异步调用,开始连接服务端

this.btnConnect.Enabled = false; this.btnDisconnect.Enabled = true; }

private void btnDisconnect_Click(object sender, EventArgs e) {

_client.Close();

this.lblStatus.Text = \连接断开!\; this.btnConnect.Enabled = true; this.btnDisconnect.Enabled = false; }

private void btnSend_Click(object sender, EventArgs e) {

byte[] message = Encoding.Default.GetBytes(DateTime.Now.TimeOfDay + \ + this.txtMessage.Text);//将文本框里的东西整合成消息 txtMessage.Focus(); try {

_client.BeginSend(message, 0, message.Length, SocketFlags.None, new AsyncCallback(SentData), _client);//开始发送 txtMessage.Clear(); } catch {

ProcessDisconnection();

15 / 22

页眉 return; } }

void Connected(IAsyncResult iar) {

_client = (Socket)iar.AsyncState; try {

_client.EndConnect(iar);//关闭连接请求

this.lblStatus.Text = \连接到:\ + _client.RemoteEndPoint.ToString();

_client.BeginReceive(_receivedData, 0, _receivedData.Length, SocketFlags.None, new AsyncCallback(ReceivedData), _client);//异步调用,开始接收消息 } catch {

ProcessDisconnection(); return; } }

void ReceivedData(IAsyncResult iar) {

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

recv = remote.EndReceive(iar); } catch {

ProcessDisconnection();

16 / 22