110,536
社区成员
发帖
与我相关
我的任务
分享
//不解释,跳过
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
namespace Socket_Programing_Test
{
public partial class Form1 : Form
{
//声明变量,tcpclient,端口和委托
TcpListener tcplistener;
int port;
delegate void AppendStringDelegate(string str);
AppendStringDelegate appendstringdelegate;
public Form1()
{
InitializeComponent();
appendstringdelegate = new AppendStringDelegate(AppendString);
}
private void button建立连接_Click(object sender, EventArgs e)
{
//从textbox1中获取端口
port = Convert.ToInt32(textBox1.Text);
try
{
tcplistener = new TcpListener(IPAddress.Any,port);
tcplistener.Start();
}
catch(Exception ex)
{
listBox1.Items.Add("失败");
listBox1.Items.Add(ex.Message);
return;
}
//建立新的线程用于获取客户端请求信息
ThreadStart ts = new ThreadStart(Listenclientconnect);
Thread mythread = new Thread(ts);
mythread.Start();
listBox1.Items.Add("成功");
}
private void Listenclientconnect()
{
while (true)
{
TcpClient newclient;
try
{
newclient = tcplistener.AcceptTcpClient();
}
catch
{
break;
}
ParameterizedThreadStart pts = new ParameterizedThreadStart(ReceiveData);
Thread receivethread = new Thread(pts);
receivethread.Start(newclient);
}
}
private void ReceiveData(object obj)
{
TcpClient client= (TcpClient)obj;
NetworkStream networkstream =client.GetStream();
StreamReader sr=new StreamReader(networkstream);
bool exit=false;
while(exit==false)
{
string receivestring = null;
try
{
receivestring = sr.ReadLine();
}
catch
{
return;
}
switch(receivestring)
{
case "Login" :
listBox1.Invoke(appendstringdelegate,"一位用户已进入");
break;
case "Logout" :
listBox1.Invoke(appendstringdelegate,"一位用户离开");
break;
default:
break;
}
client.Close();
}
}
private void button2_Click_1(object sender, EventArgs e)//关闭tcplistener
{
tcplistener.Stop();
listBox1.Items.Add("成功关闭");
}
private void AppendString(string str)
{
listBox1.Items.Add(str);
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
namespace Socket_Programing_Test__client_
{
public partial class Form1 : Form
{
TcpClient tcpclient;
IPAddress Serverip;
int port;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Clear();
}
private void button1_Click(object sender, EventArgs e)
{
port = Convert.ToInt32(textBox2.Text);
IPAddress[] ip1 = Dns.GetHostAddresses( textBox1.Text);
Serverip = ip1[0];
IPEndPoint ipep=new IPEndPoint(serverip,port);
try
{
tcpclient = new TcpClient();
tcpclient.Connect(ipep);
}
catch(Exception ex)//如果输入广域网IP,抛出异常:“由于目标计算机积极拒绝,无法连接”
{
listBox1.Items.Add("连接服务器失败");
listBox1.Items.Add(ex.Message);
return;
}
listBox1.Items.Add("连接成功");
}
}
}