您的位置:首页 > 理论基础 > 计算机网络

C#的TcpClient和TCPSocket简单通信

2017-09-03 15:10 399 查看
服务端程序

private void button1_Click(object sender, EventArgs e)
{
int port1 = Convert.ToInt32(port.Text);
IPEndPoint p = new IPEndPoint(IPAddress.Any,port1);
server = new TcpListener(p);
//最多接受20个连接数
server.Start(20);
lbshow.Text = "服务器启动";
Thread th = new Thread(listen);

th.IsBackground = true;
th.Start(server);
}

public void listen(object server)
{
while (true)
{
//强制类型转换
TcpListener server1 = server as TcpListener;
client = server1.AcceptTcpClient();
lbshow.Text = "已经和客户端链接";

//服务器端不断的接收数据
Thread th1 = new Thread(receive);
th1.IsBackground = true;
th1.Start(client);

}

}

public void receive(object s)
{

TcpClient client1 = s as TcpClient;
while (true)
{
try
{
Byte[] bytes = new Byte[256];
stream = client1.GetStream();

int n = stream.Read(bytes, 0, bytes.Length);
string data = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
//说明客户端断开了
if (n == 0)
{
lbshow.Text = "已经和客户端断开";
stream.Close();
client1.Close();
break;
}

listBox1.Items.Add("客户端" + data);
}
catch (Exception e)
{

Console.WriteLine(e);
}
finally
{
lbshow.Text = "已经和客户端断开";
stream.Close();
client1.Close();
}

}

}

//向客户端发送数据
private void btnstart_Click(object sender, EventArgs e)
{
byte[] msg = Encoding.UTF8.GetBytes(message.Text);

4000
stream = client.GetStream();
stream.Write(msg,0,msg.Length);
}

//服务器端接受客户端数据
private void btnreceive_Click(object sender, EventArgs e)
{
Byte[] bytes = new Byte[256];
stream = client.GetStream();
stream.Read(bytes,0,bytes.Length);
string data = Encoding.UTF8.GetString(bytes,0,bytes.Length);
listBox1.Items.Add("客户端"+data);
}

private void btnabort_Click(object sender, EventArgs e)
{
if (stream != null)
stream.Close();
if (client != null)
client.Close();
if (server != null)
server.Stop();
}

//程序加载的时候取消跨线程的检查
private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
}


客户端程序

private void btnstart_Click(object sender, EventArgs e)
{
//获取ip
string strip = ipadress.Text;
//获取端口
int port1 = Convert.ToInt32( port.Text);
//连接
client = new TcpClient();
client.Connect(strip,port1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: