简单Socket实现客户端和服务器连接

一.    设计思路

㈠   服务器

1)       创建主体框架:建立程序的主要界面后,系统自动生成界面的主要窗口生成代码。对于每个按钮的的代码段中,分别添加事件触发的处理代码。

2)       创建Socket实例serverSocket并绑定到用于TCP通信的本地IP地址和端口上。Bind方法完成绑定工作。绑定后用Listen方法等待客户端发出的连接尝试。

3)       创建一个线程监听客户端连接请求,用Accept方法获取客户端连接,得到客户端的socket实例。并记录在User实例中。

4)       创建一个线程处理接受的客户端数据,每接受一个客户端连接,就创建立各对应的线程循环接受该客户端发来的信息。每一个User实例对应一个clientSocket。用while来循环监听由客户端发来的信息。客户端发来的信息用Login,Logout,client等字符串分割处理不同的信息。其中client表示从客户端接受消息。

5)       本程序用BinaryReader和BinaryWriter处理字符串信息,用网络流来传输数据,使程序更有效率。

6)       利用委托来监听不同用户连接时的数目,改变其对应Label的值。

7)       当调用主线程创建的空间时,利用 InvokeRequired判断是否控件是否由主线程创建,如果是用Invoke方法完成对应操作。

㈡   客户端

1)       创建主体框架:建立程序的主要界面后,系统自动生成界面的主要窗口生成代码。对于每个按钮的的代码段中,分别添加事件触发的处理代码。

2)       一个客户端对应一个clientSocket,用random函数创建不同的用户名。

3)       创建一个后台线程,利用while循环在时间间隔内不断尝试连接服务器,连接成功时调用改变Label的方法,实现状态的改变并显示。

4)       将网络流作为二进制读写对象,创建一个线程接收由客户端传来的信息。

5)       用字符串分割器解析不同消息。实现登录,登出,接收服务器消息的功能。


服务器连接核心代码:

serverSocket = newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

            localAddress =IPAddress.Parse("127.0.0.1");

            IPEndPoint serverIPE = newIPEndPoint(localAddress, 56000);

            serverSocket.Bind(serverIPE);

            serverSocket.Listen(10);

            Console.WriteLine("启动监听{0}成功", serverSocket.LocalEndPoint.ToString());

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值