【C#】使用TcpListener和TcpClient实现简单通信
来源:互联网 发布:qq飞车噬魂剃刀数据 编辑:程序博客网 时间:2024/06/10 15:46
本例子为简单使用TcpListener和TcpClient实现通信,含有诸多不足,仅供初学者参考。
server:
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace Server{ /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { private TcpListener myListener; private TcpClient newClient; public BinaryReader br; public BinaryWriter bw; public MainWindow() { InitializeComponent(); } private void button_Click(object sender, RoutedEventArgs e) { Thread myThread = new Thread(ServerA); myThread.Start(); } private void ServerA() { IPAddress ip = IPAddress.Parse("127.0.0.1");//服务器端ip myListener = new TcpListener(ip, 7890);//创建TcpListener实例 myListener.Start();//start newClient = myListener.AcceptTcpClient();//等待客户端连接 label.Dispatcher.Invoke(()=>label.Content = "连接成功"); while (true) { try { NetworkStream clientStream = newClient.GetStream();//利用TcpClient对象GetStream方法得到网络流 br = new BinaryReader(clientStream); string receive = null; receive = br.ReadString();//读取 textBox.Dispatcher.Invoke(() => textBox.Text += receive+"\r\n"); } catch { MessageBox.Show("接收失败!"); } } } //发送消息 private void send_Click(object sender, RoutedEventArgs e) { //利用TcpClient对象GetStream方法得到网络流 NetworkStream clientStream = newClient.GetStream(); bw = new BinaryWriter(clientStream); //写入 bw.Write(message.Text); textBox.Text += message.Text + "\r\n"; } }}
client:
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace Client{ /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { private TcpClient client; public BinaryReader br; public BinaryWriter bw; public MainWindow() { InitializeComponent(); } private void button_Click(object sender, RoutedEventArgs e) { Thread myThread = new Thread(ClientA); myThread.Start(); } private void ClientA() { //通过服务器的ip和端口号,创建TcpClient实例 client = new TcpClient("127.0.0.1", 7890); label.Dispatcher.Invoke(()=> label.Content = "与服务器连接成功"); while (true) { try { NetworkStream clientStream = client.GetStream(); br = new BinaryReader(clientStream); string receive = null; receive = br.ReadString(); textBox.Dispatcher.Invoke(() => textBox.Text += receive + "\r\n"); } catch { MessageBox.Show("接收失败!"); } } } //发送消息 private void send_Click(object sender, RoutedEventArgs e) { NetworkStream clientStream = client.GetStream(); bw = new BinaryWriter(clientStream); bw.Write(message.Text); textBox.Text += message.Text + "\r\n"; } }}
补充:
textbox多行显示
(1)将TextWrapping设为”Wrap”
(2)将AcceptsReturn设为”True”
(3)将VerticalScrollBarVisibility设置为”Visible”
运行结果:
1 0
- 【C#】使用TcpListener和TcpClient实现简单通信
- tcpclient和tcplistener通信
- TcpListener和TcpClient简单例子
- C#利用TcpListener和TcpClient类实现服务器和客户端的通信
- TcpClient和TcpListener
- TcpListener和TcpClient研究
- TCPlistener和TCPClient
- C# 基于TcpListener和TcpClient的客户端服务端通信
- C#.网络编程.TcpListener&TcpClient
- TcpClient类和TcpListener类
- TcpClient类和TcpListener类
- TcpListener(服务器)和TcpClient(客户端)
- Socket编程—TcpListener和TcpClient的使用
- .NET中TCPClient与TCPListener通信初步
- TcpListener & TcpClient
- c#socket 、TCPClient、TCPListener用法详解
- C#TcpClient TcpListener客户端服务器程序
- TcpListener类与TcpClient类的使用
- servlet实现文件上传
- Java中内部类
- 跟我一起写 Makefile(十)
- 设计模式C++实现(3)——适配器模式
- Vue最早版本迁移到2.0
- 【C#】使用TcpListener和TcpClient实现简单通信
- Listview中的分割线、分割线的颜色以及分割线高度的改变 Button或者ImageButton的背景设为透明或者半透明
- PopupWindow学习
- sqli-labs学习教程(一)
- Manacher马拉车算法总结
- synchronized关键字(四)
- Python 之 self
- 跟我一起写 Makefile(十一)
- Ubuntu14.04 OpenCV编译安装与测试