一步一步教你使用.net进行Socket通信5

在SocketFactory中加入StartClient函数



+展开
-C#
1public Connection StartClient(IPAddress ip,int port)
2
3{
4
5     return Client.StartClient(ip,port);
6
7}
8



在SocketClient的Form1的Form1_Load中加入以下代码



插入断点。开始调试执行。当执行取最后一句时。我们看到_connection已经连接成功。



好了,现在我们的客户端已经连接上服务器,并可以发送消息了。但现在我们还没有如何发送消息的方法。我们在SocketFactory中增加一个发消息的静态方法。并且声明一个编码类型的静态变量



+展开
-C#
public static System.Text.Encoding DefaultEncoding = 

System.Text.Encoding.GetEncoding("GB2312");

public static void SendMessage(string message,Connection connection) {

     byte[] buffer = DefaultEncoding.GetBytes(message);

     connection.NetworkStream.Write(buffer,0,buffer.Length);

}

现在我们可以用这个函数发消息给服务器端了。



我们看到消息发送成功,但服务器端没有任何反应。这是因为我们还没有在服务器端侦听消息。在Server类中增加如下代码




加入开始侦听网络流的线程


+展开
-C#
public void Listenning() {

     while(true) {

         System.Threading.Thread.Sleep(200);

         foreach(Connection connection in this._connections) {

              if(connection.NetworkStream.CanRead && connection.NetworkStream.DataAvailable) {

                   byte[] buffer = new byte[1024];

                   int count = connection.NetworkStream.Read(buffer,0,buffer.Length);

                   Console.Write(SocketFactory.DefaultEncoding.GetString(buffer,0,count));

              }

         }

     }

}

 

 1public void StartListen() {
 2
 3     _listenningthread = new System.Threading.Thread(new System.Threading.ThreadStart(Listenning));
 4
 5     _listenningthread.Start();
 6
 7}
 8
 9private System.Threading.Thread _listenningthread;
10
再在SocketFactory的StartServer中加入以下代码,以开始侦听网络流。



好。我们再启动SocketServerTest。并运行SocketClientTest。现在在SocketServerTest的控制台可以看到如下输出:




也即服务器收到了客户端发来的Hello Server的消息。

这一章我们就到这里。下一章我们继续讲如何重构这一章的代码,并继续深入的讲如何定义协议以及如何使用这些协议收发消息。

加支付宝好友偷能量挖...


评论(0)网络
阅读(107)喜欢(0)Asp.Net/C#/WCF