我搞过VB的网络编程,使用的是WINSOCKER控件来完成操作,使用起来感觉很简单,很多地方使用的事件。但在C#里面却出现了TcpClient类,TcpListener类和Socket类,我不太知道这几个类之间的关系,传输数据的原理。望高手指点。如果在FormClient窗体中定义了以下几个类:
TcpClient tc;
Socket sc;
TextBox tbc; //文本框在FormServer窗体中定义了以下几个类
TcpListener ts;
Socket ss;
TextBox tbs; //文本框如果需要将FormClient中的tbc中的文本传输到FormServer中的tbs文本框中,需要哪些步骤,请大侠写出详细过程。
例如:
1. 对象 = new 类(参数) //注释
2. 对象.方法(); //注释
3. 对象.属性 = 值; //注释
TcpClient tc;
Socket sc;
TextBox tbc; //文本框在FormServer窗体中定义了以下几个类
TcpListener ts;
Socket ss;
TextBox tbs; //文本框如果需要将FormClient中的tbc中的文本传输到FormServer中的tbs文本框中,需要哪些步骤,请大侠写出详细过程。
例如:
1. 对象 = new 类(参数) //注释
2. 对象.方法(); //注释
3. 对象.属性 = 值; //注释
解决方案 »
- 置于顶层和置于底层用代码如何实现呢
- 不设置id自动增长的情况下当我新增每一条数据时id自动增长
- C# 针式打印机连续打印的问题
- 关于事件处理的问题(分数少,但已经倾家荡产了!)
- httphanlder类中使用Server.Transfer定向到另外一个页面的错误,200分问题。
- 火急*****关于引用dll!*******!解决马上给分!!!!
- 可以查询,但无法增删改(VFP的*.dbf数据库)
- 无法将类型为“System.DBNull”的对象强制转换为类型“System.Byte[]
- 程序实现网页自动注册的方法有哪些?
- 有关 NotifyIcon
- C#与串口通讯
- 新手提问:wince开发的几个问题。
http://blog.csdn.net/yeerh/archive/2006/10/04/1320265.aspx
TcpListener tcp=new TcpListener(5656);
tcp.Start();
while(true)
{
TcpClient t=tcp.AcceptTcpClient();
Stream stream = t.GetStream();
StreamReader reader = new StreamReader(stream);
textBox2.AppendText(reader.ReadToEnd());
}
Client端发送:
TcpClient tcpc=new TcpClient("127.0.0.1",5656);
NetworkStream tcpstream=tcpc.GetStream();
StreamWriter w=new StreamWriter(tcpstream);
w.Write(msg);
w.Flush();
w.Close();
tcpc.Close();
上面的代码已经可以实现客户端将数据传输到服务器端。但是为什么要在服务器端写一个死循环?服务器端的窗口不能够被拖动,我在死循环中加了一个Application.DoEvents();才使窗口能显示内容。必须要写死循环吗?有没有更好的解决办法?
tcp.BeginAcceptSocket()
------------------------------------------------------------
Server端的监听线程:
TcpListener tcp=new TcpListener(5656);
tcp.Start();
while(true)
{
TcpClient t=tcp.AcceptTcpClient(); //此处程序阻塞,正在侦听,等待客户端连接时继续
Stream stream = t.GetStream();
StreamReader reader = new StreamReader(stream); //此处读取数据时阻塞,直道连接断开时,程序才会继续textBox2.AppendText(reader.ReadToEnd()); }------------------------------------------------------------以上代码中有两次阻塞,第一次阻塞,只要客户端与其产生连接,程序就会继续运行,第二次阻塞时,不停读取数据流,必须断开连接时才能继续运行.这样一来要实现能互相聊天,就必须不停的连接与断开.有更好的办法解决吗?
public bool Start()
{
try
{
TcpListener listener = new TcpListener(8888);
listener.Start();
listener.BeginAcceptTcpClient(new AsyncCallback(hlp_AsyncAcceptTcpClient), this);
return true;
}
catch (Exception)
{
return false;
}
}
protected void hlp_AsyncAcceptTcpClient(IAsyncResult ar)
{
TcpClient client = listener.EndAcceptTcpClient(ar);
hlp_BeginAccept();
byte[] bytes = System.Text.Encoding.UTF8.GetBytes("要传的秋波");
client.GetStream().Write(bytes, 0, bytes.Length);
client.Close();
}