黑马程序员技术交流社区

标题: (急!!!)关于Socket套接字的问题 [打印本页]

作者: ☜⑦圊⑥慾➹沼    时间: 2013-9-27 14:36
标题: (急!!!)关于Socket套接字的问题
本帖最后由 ☜⑦圊⑥慾➹沼 于 2013-9-27 17:42 编辑

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

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

作者: 于振发    时间: 2013-9-27 14:42
本帖最后由 于振发 于 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

作者: 0和1,编程世界    时间: 2013-9-27 14:42
用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);
              
            }

作者: ☜⑦圊⑥慾➹沼    时间: 2013-9-27 14:46
0和1,编程世界 发表于 2013-9-27 14:42
用try-catch
在异常中把异常消息打印出来即可,异常的消息就是提示
比如我先前写的主要代码

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


作者: ☜⑦圊⑥慾➹沼    时间: 2013-9-27 17:42
谢谢了。
作者: 追影    时间: 2013-9-27 23:36
可以在关闭服务端的事件时,提示查看列表是否为空,就是是否还有客户端连接着服务器,然后判读下是否触发事件,个人想法,仅供参考




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2