//服务端代码IPAddress ip = IPAddress.Parse("192.199.0.3");
tcpListener = new TcpListener(ip, 8000);tcpListener.Start();Byte[] buffer = new byte[2048];String data = null;
SetText setText = new SetText(setRichTextBoxText);while(true)
{
this.Invoke(setText, new object[]{"Waiting for a connection... "}); TcpClient client = tcpListener.AcceptTcpClient();
this.Invoke(setText, new object[]{"Connected!"}); data = null;
NetworkStream stream = client.GetStream(); int i = stream.Read(buffer, 0, buffer.Length);
data = System.Text.Encoding.ASCII.GetString(buffer, 0, i);
data = data.ToUpper();
buffer = System.Text.Encoding.ASCII.GetBytes(data); stream.Write(buffer, 0, buffer.Length);
this.Invoke(setText, new object[]{data}); client.Close();
}//客户端代码private void button1_Click(object sender, System.EventArgs e)
{
try
{
tcpClient = new TcpClient("192.9.200.3", 8000);
Byte[] data = System.Text.Encoding.ASCII.GetBytes(this.textBox1.Text); NetworkStream stream = tcpClient.GetStream(); stream.Write(data, 0, data.Length); String responseData = String.Empty; Int32 bytes = stream.Read(data, 0, data.Length);
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); this.richTextBox1.Text += "Received: " + responseData + "\n";
stream.Close(); this.textBox1.Text = ""; }
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
tcpClient.Close();
}
}如上面的代码所示,只是客户端将textbox中的内容发到服务端,服务端再返一个信息给客户端之后他们就断开连接了,如果我想他们的连接一直不断,那么应该怎么改写上面的代码呢?
tcpListener = new TcpListener(ip, 8000);tcpListener.Start();Byte[] buffer = new byte[2048];String data = null;
SetText setText = new SetText(setRichTextBoxText);while(true)
{
this.Invoke(setText, new object[]{"Waiting for a connection... "}); TcpClient client = tcpListener.AcceptTcpClient();
this.Invoke(setText, new object[]{"Connected!"}); data = null;
NetworkStream stream = client.GetStream(); int i = stream.Read(buffer, 0, buffer.Length);
data = System.Text.Encoding.ASCII.GetString(buffer, 0, i);
data = data.ToUpper();
buffer = System.Text.Encoding.ASCII.GetBytes(data); stream.Write(buffer, 0, buffer.Length);
this.Invoke(setText, new object[]{data}); client.Close();
}//客户端代码private void button1_Click(object sender, System.EventArgs e)
{
try
{
tcpClient = new TcpClient("192.9.200.3", 8000);
Byte[] data = System.Text.Encoding.ASCII.GetBytes(this.textBox1.Text); NetworkStream stream = tcpClient.GetStream(); stream.Write(data, 0, data.Length); String responseData = String.Empty; Int32 bytes = stream.Read(data, 0, data.Length);
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); this.richTextBox1.Text += "Received: " + responseData + "\n";
stream.Close(); this.textBox1.Text = ""; }
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
tcpClient.Close();
}
}如上面的代码所示,只是客户端将textbox中的内容发到服务端,服务端再返一个信息给客户端之后他们就断开连接了,如果我想他们的连接一直不断,那么应该怎么改写上面的代码呢?
解决方案 »
- 求一正则表达式(或其它方式)替换内容中图片的大小
- 如何增加VS中某个控件的功能啊?需要自己重头做一个控件吗?
- 菜鸟求教个问题
- 如何自定义事件?
- 请高手来帮忙啊如何用C#正则表达式 把 <div>${中国,CHINA}$</div> 替换成 <div><a href=a.aspx?id="${中国,CHINA}$">${中国,CHINA}$</a></div>
- 使用C#的Time控件来控制的Label位置(来回左右移动),但存在我的界面老是一闪一闪,可能你们的机器不会,但我的会,我放的是主界面(多
- MDI程序中,窗口能否即是子窗体,又是父窗体,该如何实现???
- c#如何构建一个数据库服务端的windows使之安规定时间定期去数据库清理记录
- wcf 如何返回自定义xml报文
- 如何在c#的环境下实现随机种子[如抽奖那种]
- 着急啊,就是孟兄的那个用WebClient上传的代码,如果需要服务器需要验证身份怎么办。在线等。。。。。。
- winform乱码问题~`
NetworkStream是支持同步和异步的流处理的,Read方法可以获取数据接收的长度.
消息的发送和接收最好是用异步来处理,通过委托建立数据发送和接收的钩子来进行监控.
因为你打开连接处理后又关闭了,所以没有保持连接.
NetworkStream是支持同步和异步的流处理的,Read方法可以获取数据接收的长度.
消息的发送和接收最好是用异步来处理,通过委托建立数据发送和接收的钩子来进行监控.
"消息的发送和接收最好是用异步来处理,通过委托建立数据发送和接收的钩子来进行监控."TcpListener和TcpClient好象不可以这样处理吧?Socket类才可以,不知道我有没有理解错呢...如果TcpListener和TcpClient的功能这么弱,为何还有存在的必要呢?一般TcpListener和TcpClient的应用场合包括哪些呀?
你没有理解这两个对象,看一下MSDN这两个对象是用于简化基于Tcp的服务和连接的应用.
对于数据的发送和接收是依赖于NetworkStream的(该对象是基于Socket的包装,供了异步处理的方法),对于异步操作你必须手动创建异步调用结束的代码(就是异常调用成功的过程),在这个过程你可以切入委托代码进行监控.
TcpClient 类提供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数据。>>>>>这句话让人理解为TcpClient类的功能简单,用于同步阻塞模式进行网络通讯