黑马程序员技术交流社区

标题: socket学习 [打印本页]

作者: 小飞龙    时间: 2012-7-25 12:13
标题: socket学习
学习Socket的时候,写的Socket和ServerSicket可以发送和接收消息,
一运行就会抛ConnectException,该怎么解决呢
作者: 乐峰    时间: 2012-7-25 12:22
java的异常是面向对象的。一个Java的Exception是一个描述异常情况的对象.当出现异常情况时,一个Exception对象就产生了,并放到异常的成员函数里。
Java的异常处理是通过5个要害词来实现的:try,catch,throw,throws和finally。在Java语言的错误处理结构由try,catch,finally三个块组成。其中try块存放将可能发生异常的Java语言,并治理相关的异常指针;catch块紧跟在try块后面,用来激发被捕捉的异常;finally块包含清除程序没有释放的资源,句柄等。不管try块中的代码如何退出,都将执行finally块。
Java语言可以不在方法中直接捕捉,而用throw语句将异常抛给上层的调用者。Throw语句就是来明确地抛出一个异常;首先你必需得到一个Throwable的实例句柄,通过参数传到catch中,或者采用new操作符来创建一个。
  
  格式:throw new WhcaException(e.getMessage);
  
  程序会在throw语句后立即终止,它后面的语句都不执行,然后在包含它的所有try块中从里到外寻找含有与其匹配的catch.
  
  声明异常类
  当throw语句被用在方法说明中时,throw有用throws代替。要害字throws用来标明一个方法可能抛出的各种异常。对大多数Exception子类来说,Java编译器会强迫你声明在一个方法中抛出的异常的类型。如下:
  
  格式:type method_name(arg_list) throws WhcaException{
  
         ……
  }
当程序员为提供一些特定的功能用Java类时,往往需要保证类之间有良好的关系,而且类之间的接口易于理解和实现,这是定义一个新的异常类。建议创建自己的异常类,便于维护,治理。
  
  定义一个新的异常类
      通常采用Exception作为异常类的超类,如:
  
  package whca.common;
  
  public class WhcaException extends Exception{
  
     public WhcaException(){
  
     }
  
     public WhcaException(String s){
  
       super(s);
  
     }
  
  }
以上三种你可以选择一种来处理异常,最佳选择是try{}catch{}finally{}
作者: 山水游客    时间: 2012-7-25 12:30
ConnectException,说明你Socket连接异常,可能是两个愿因:
一,你先运行的客户端。服务器还没启动,客户端自然连不上。
二,连接地址和端口号错误。找不到指定的服务器和端口也连不上。
作者: 李菁    时间: 2012-7-25 12:36
客户进程,如果发出的连接请求被加进服务器的中,说明客户与服务器的连接建立成功,客户进程从Socket构造方法中正常返回。
如果客户进程发出的连接请求被服务器拒尽,Socket构造方法就会抛出ConnectionException异常。
这个问题可能出在数据库端而不是程序的问题
解决方法:需要查询下是不是数据库服务已经关闭

作者: 周玉龙    时间: 2012-7-25 12:37
我觉得你的问题可能是代码没有错误,但是你的端口一直用着你刚开始用的端口,然后停止程序后,再来运行程序就出错。
如果是这样的话,那么就是系统还没有释放你的刚才用的端口。这个时候你只要换一个端口号,就能用了。
因为你刚才用的时候系统已经记住了你刚才用的端口号。你停止程序后你的操作系统其实还没有释放刚才的端口号。Socket是TCP
传输协议,也就是说面向连接的协议。你的端口号被占用了。需要你重写换一个端口号。或者重启电脑什么的也可以解决的。




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