C# 网络编程 TcpListener
1.服务断代码
public partial class Server : Form
{ private bool lk = true; public Server()
{
InitializeComponent();
TextBox.CheckForIllegalCrossThreadCalls = false;
} private void button1_Click(object sender, EventArgs e)
{
IPAddress ip = IPAddress.Parse(textBox1.Text); TcpListener server = new TcpListener(ip, int.Parse(textBox2.Text));
server.Start(); TaskFactory tasks = new TaskFactory();
string ipaddress = string.Empty;
TcpClient client = null;
while (lk)
{
Console.WriteLine("等待连接。。。");
client = server.AcceptTcpClient(); tasks.StartNew(() => HandleClient(client, ipaddress)).Wait();
}
} private void HandleClient(TcpClient tcpclient, string ipadd)
{ lock (tcpclient)
{
if (tcpclient == null)
{
return;
} // Buffer for reading data
Byte[] bytes = new Byte[];
String data = null; // Enter the listening loop.
while (tcpclient.Connected)
{ data = null; NetworkStream stream = tcpclient.GetStream(); int i; if ((i = stream.Read(bytes, , bytes.Length)) != )
{
data = System.Text.Encoding.UTF8.GetString(bytes, , i); byte[] msg = System.Text.Encoding.UTF8.GetBytes(data); //stream.Write(msg, 0, msg.Length);
textBox3.AppendText(data);
}
tcpclient.Close();
}
}
} }
2.客户端代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} TcpClient client = null;
private void button1_Click(object sender, EventArgs e)
{ client = new TcpClient();
try
{
//if (!client.Connected)
// client.Close();
client.Connect(tbIP.Text, int.Parse(tbPort.Text)); // 与服务器连接
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return;
} textBox2.Text = "连接成功";
} private void textBox1_TextChanged(object sender, EventArgs e)
{ } private void button2_Click(object sender, EventArgs e)
{
button1_Click(null, null); string msg = textBox1.Text;
if (msg != "")
{
NetworkStream streamToServer = client.GetStream(); //创建一个客户端的NetworkStream对象
byte[] buffer = Encoding.UTF8.GetBytes(msg); // 获得缓存 streamToServer.Write(buffer, , buffer.Length); // 发往服务器
int numb = streamToServer.Read(buffer, , buffer.Length); //接收来自服务器传回来的数据,保存到buffer数组(byte型)中去
string s = Encoding.UTF8.GetString(buffer, , buffer.Length); //将数组中的内容转化成string字符串,并且输出
textBox2.AppendText(s + "\r\n");
}
}
}
C# 网络编程 TcpListener的更多相关文章
- C#网络编程之---TCP协议的同步通信(二)
上一篇学习日记C#网络编程之--TCP协议(一)中以服务端接受客户端的请求连接结尾既然服务端已经与客户端建立了连接,那么沟通通道已经打通,载满数据的小火车就可以彼此传送和接收了.现在让我们来看看数据的 ...
- [转]C#网络编程(订立协议和发送文件) - Part.4
本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 源码下载:http://www.trac ...
- [转]C#网络编程(异步传输字符串) - Part.3
本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part3.aspx 这篇文章我们将前进一大步,使用异步的方式 ...
- [转]C#网络编程(同步传输字符串) - Part.2
本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part2.aspx 服务端客户端通信 在与服务端的连接建立以 ...
- [转]C#网络编程(基本概念和操作) - Part.1
本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part1.aspx 引言 C#网络编程系列文章计划简单地讲述 ...
- C#网络编程之--TCP协议(一)
TCP 是面向连接的传输协议 面向连接,其实就好比,A打电话给B,如果B接听了,那么A和B之间就的通话,就是面向连接的 TCP 是全双工的传输协议 全双工,这个理解起来也很简单,A打电话给B,B接听电 ...
- C#网络编程(1)
1.Purpose 1.什么是网络编程 2.TCP/IP协议 3.什么是套接字 4.多线程深入理解 二.Basic Concept 1.网络编程:主要实现进程(线程)相互之间的通信和基本的网络应用原理 ...
- [C# 网络编程系列]专题三:自定义Web服务器
转自:http://www.cnblogs.com/zhili/archive/2012/08/23/2652460.html 前言: 经过前面的专题中对网络层协议和HTTP协议的简单介绍相信大家对网 ...
- C#网络编程系列(两)它Socket同步TCPserver
声明原文 笔者:竹zz 本文地址http://blog.csdn.net/zhujunxxxxx/article/details/44258719 转载请注明出处 文章系列文件夹 C#网络编程系列文 ...
随机推荐
- 【题解】Antisymmetry
题目大意 对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作“反对称”字符串.比如00001111和010101就是反对称的,1001就不是. 现在给出一个长度为N的 ...
- [fw]How to use DISM to install a hotfix from within Windows
How to use DISM to install a hotfix from within Windows Jeff Hughes (CORE) 15 Feb 2011 10:10 AM 22 H ...
- nginx之域名重定向
一般网站默认的访问端口为80,当多个域名指向同一个服务器IP时,可以nginx进行重定向,分别指向不同的目的地址或其他主机. 在nginx目录下的conf/vhost子目录下建两个conf文件,hos ...
- HTML学习笔记(基础部分)
一.基本概念 1.HTML:超文本标记语言(HyperText Markup Language)是一种用于创建网页的标准标记语言. 2.HTML文档的后缀名:.html 或 .htm 3.标签:由尖括 ...
- kubernetes容器集群部署Etcd集群
安装etcd 二进制包下载地址:https://github.com/etcd-io/etcd/releases/tag/v3.2.12 [root@master ~]# GOOGLE_URL=htt ...
- shell函数的定义和调用
- 启动ABP项目
1.在官网下载ABP项目 2.打开项目选择解决方案,右击还原NuGet包 3.修改appsettings.json中的ConnectionStrings 例子"ConnectionStrin ...
- zoj 2112 单点修改的主席树(树状数组套主席树)
题目大意: 区间第k大问题+单点修改 基本思路: 这个题有用整体二分,cdq分治,还有主席树+平衡树的,还有就是主席树+树状数组. 我采用的是b站电子科大大佬的主席树写法,尤其喜欢他的离散化方法,所以 ...
- vi快捷操作
全部删除: 按esc键后,先按gg(到达顶部),然后dG 全部复制: 按esc键后,先按gg,然后ggyG 全选高亮显示: 按esc键后,先按gg,然后ggvG或者ggVG 单行复制: 按esc键后, ...
- java SSLContext
1. 什么是SSLSocket JDK文档指出,SSLSocket扩展Socket并提供使用SSL或TLS协议的安全套接字. 这种套接字是正常的流套接字,但是它们在基础网络传输协议(如TCP)上添加了 ...