一步一步教你使用.net进行Socket通信5
在SocketFactory中加入StartClient函数
在SocketClient的Form1的Form1_Load中加入以下代码
并
插入断点。开始调试执行。当执行取最后一句时。我们看到_connection已经连接成功。
好了,现在我们的客户端已经连接上服务器,并可以发送消息了。但现在我们还没有如何发送消息的方法。我们在SocketFactory中增加一个发消息的静态方法。并且声明一个编码类型的静态变量
现在我们可以用这个函数发消息给服务器端了。
我们看到消息发送成功,但服务器端没有任何反应。这是因为我们还没有在服务器端侦听消息。在Server类中增加如下代码
加入开始侦听网络流的线程
再在SocketFactory的StartServer中加入以下代码,以开始侦听网络流。
好。我们再启动SocketServerTest。并运行SocketClientTest。现在在SocketServerTest的控制台可以看到如下输出:
也即服务器收到了客户端发来的Hello Server的消息。
这一章我们就到这里。下一章我们继续讲如何重构这一章的代码,并继续深入的讲如何定义协议以及如何使用这些协议收发消息。
+展开
-C#
1public Connection StartClient(IPAddress ip,int port)
2
3{
4
5 return Client.StartClient(ip,port);
6
7}
8
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);
}
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类中增加如下代码
加入开始侦听网络流的线程
+展开
10-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;
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;
再在SocketFactory的StartServer中加入以下代码,以开始侦听网络流。
好。我们再启动SocketServerTest。并运行SocketClientTest。现在在SocketServerTest的控制台可以看到如下输出:
也即服务器收到了客户端发来的Hello Server的消息。
这一章我们就到这里。下一章我们继续讲如何重构这一章的代码,并继续深入的讲如何定义协议以及如何使用这些协议收发消息。
加支付宝好友偷能量挖...