在确定socket连通的时候输出一个连接成功的信息
即在connect = new Socket(hostIP, hostPort);
后面,看看socket是否真正连通了//这个你程序中已经有了
如果连通了,该和unix用户权限无关才是,再说你有在unix运行这个程序的权限,就应该可以才是
你能否保证两端肯定有数据可发?
建议在发送的时候比如write语句前头输出待发送的信息(自个调试)

解决方案 »

  1.   


    在确定socket连通的时候输出一个连接成功的信息
    即在connect = new Socket(hostIP, hostPort);
    后面,看看socket是否真正连通了//这个你程序中已经有了
    如果连通了,该和unix用户权限无关才是,再说你有在unix运行这个程序的权限,就应该可以才是
    你能否保证两端肯定有数据等待或已经发送?
    建议在发送的时候比如write语句前头输出待发送的信息(自个调试)==============================================================
    如上所言,并非完全正确,请从建议的角度、用怀疑的眼光批判地接收
      

  2.   

    如果在WINDOWS中正常的话程序应该没什么问题,
    你说的UNIX我不知道是不是你把linux叫UNIX,
    检查一下你的UNIX的网络设置是否正常,如IP,名字解析是否正常工作等等
      

  3.   

    请问
    int i=socketReader.read(cLen,0,9);
    返回的i是多少?
    如果是0表示连接被断开了。看看host.allow和host.deny或防火墙等配置,是否是这个连接或端口被禁掉了。
      

  4.   

    别的不说,你程序有个小bug:public int SetUpConnection()里面catch(UnknownHostException e)0D
    {
        System.out.println("Error setting up socket connection: );
    //此处    ~~~~为 "
    按理说你程序是不会错的,毕竟你在window下面运行过了
    sigh
    问一下,你在unix下的返回结果int i=socketReader.read(cLen,0,9);0D
    i值是多少?
    你说是没有信息过来,那么这句应该会继续监听才是啊
    btw:对于BufferedReader,干嘛不用readLine()方法??直接看字符信息就行
    ==============================================================
    如上所言,并非完全正确,请从建议的角度、用怀疑的眼光批判地接收
      

  5.   

    對﹐極有可能是防火牆的問題﹐如果你用的是readHat Linux7.0以上版本﹐安裝時缺省是有防火牆的
      

  6.   


    int i=socketReader.read(cLen,0,9)的返回值是-1,应该正常
    to alphazhao:
    哦,谢谢你看出的bug,:-) 是我在贴我的程序时把一些多余的代码删掉的缘故。unix的版本是Solaris 8.0
    我这就检查一下xiaolie提到的两个文件。请继续!
      

  7.   

    不好意思,我在etc/下无法找到host.allow和host.deny两个文件。to alphazhao:
    我刚开始也是用readLine(),后来由于数据格式问题,该用read(),也是没有办法的。请继续... ...
      

  8.   

    sigh
    老实说,我对unix系统下防火墙啊什么的配置一点都不熟悉,vi命令我都忘光了……
    如果真是和操作系统有关的话,我也没有法子的说……