A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ☜⑦圊⑥慾➹沼 于 2013-9-27 17:42 编辑

各位大侠们,我现在在写一个聊天程序,我服务端启动程序,启动监听后,客户端才能与之建立连接:   1.我现在想判断一下,服务端是否开启监听,如果开启了监听,客户端连接就能成功,否则就提示连接失败。

   2.我在关闭服务端的时候,如何判断客户端是否关闭,所有客户端关闭了,我的服务端才能关闭,否则提示与某某客户端正在连接,是否强行关闭,选择强行或取消。

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 于振发 于 2013-9-27 14:44 编辑

socket 服务器端和客户端通信,面向TCP的

服务器端步骤:

1、创建用于监听的套接字(socket)

2、将套接字绑定到本地地址和端口上(bind)

3、将套接字设为监听模式(listen)

4、等待客户请求(accept),此处要不断的调用accept

5、通信(send/receive),完成后返回4

6、关闭套接字(closesocket)



客户端步骤:

1、创建套接字

2、向服务器发送连接请求(connect)

3、通信(send/recv)

4、关闭套接字

关于异常的话就加上那个try---catch
回复 使用道具 举报
用try-catch
在异常中把异常消息打印出来即可,异常的消息就是提示
比如我先前写的主要代码
try
            {
                //ip地址,IPAddress.Any表示当前计算机任何可用的ip地址
                IPAddress ip = IPAddress.Any;
                //创建网络节点,包括ip地址和端口号
                IPEndPoint point = new IPEndPoint(ip, int.Parse(this.txtPort.Text.ToString()));
                //创建负责监听的Socket对象
                Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //监听ip地址和端口号
                socket.Bind(point);
                //设置监听队列的长度
                socket.Listen(10);
                ShowMsg("监听已启动!");//启动成功!
                th = new Thread(Listen);
                th.IsBackground = true;
                th.Start(socket);
               

            }
            catch (Exception ex)  //启动失败监听!处理异常
            {
                MessageBox.Show(ex.Message);
              
            }
回复 使用道具 举报
0和1,编程世界 发表于 2013-9-27 14:42
用try-catch
在异常中把异常消息打印出来即可,异常的消息就是提示
比如我先前写的主要代码

我是要和客户端连接的啊,求解?

回复 使用道具 举报
谢谢了。
回复 使用道具 举报
可以在关闭服务端的事件时,提示查看列表是否为空,就是是否还有客户端连接着服务器,然后判读下是否触发事件,个人想法,仅供参考
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马