2228|0

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于java写socket服务和c写的客户端的通信 [复制链接]

您好:
最近由于一个项目的需要,客户端发送一个请求数据,服务端接受以后根据数据做出不同的回。我用java写了一个服务端,请求方为C语言写的,我的服务端程序启动以后,一直处在等待状态没有任何的反映:接受不到请求发来的数据,客户端也接受不到我的回应。而且不报任何异常,问题是,我用JAVA写了一个客户端测试代码却一切正常,麻烦大哥给指点一二。谢谢,我写的服务器端代码和做测试用的客户端代码如下:


SERVER:
import java.net.*;
import java.io.*;
class testserver1 implements Runnable
{
Socket s;
public testserver1(Socket s)
{
this.s=s;
}
public void run(){
try{
   InputStream ips=s.getInputStream();
   OutputStream ops=s.getOutputStream();
   BufferedReader br=new BufferedReader(new InputStreamReader(ips));
   DataOutputStream dos=new DataOutputStream(ops);
   PrintWriter out;
   while(true){
      System.out.println("已进入循环!!");
    String strword=br.readLine();
      //br.flush();
     System.out.println(strword);
     //if(strword.equalsIgnoreCase("quit"))
     // break;
    //String strecho=(new  StringBuffer(strword).reverse()).toString();
//////////////以下代码由于我怀疑是IO的原因,所以我用了各种输出形式结果失败
    dos.writeBytes("Init_ok1"+"\n");//回应1
      System.out.println("已成功回应了1");
      //dos.flush();
      ops.write("Init_ok2".getBytes());//回应2
      ops.flush();
       System.out.println("已回应了2");
     out = new PrintWriter(ops,true);
     out.println("Init_ok3"+"\n"); //回应3
       System.out.println("已回应了3");
     out.flush();
      out.close();
    break;
    //destroy();
    //stop();
         }
  br.close();
  dos.close();
  s.close();
}
catch(NoRouteToHostException ex3) //无法到达远程主机,原因是防火墙干扰或者中间路由器停机。
{
try{
     InputStream ips=s.getInputStream();
      OutputStream ops=s.getOutputStream();
      BufferedReader br=new BufferedReader(new InputStreamReader(ips));
       DataOutputStream dos=new DataOutputStream(ops);
       dos.writeBytes("Init_Fail");
                 }
      catch(Exception xe){}
            ex3.fillInStackTrace();
          System.out.println("failed");

}
catch(SocketTimeoutException e2){ //处理超时异常

try{
     InputStream ips=s.getInputStream();
   OutputStream ops=s.getOutputStream();
   BufferedReader br=new BufferedReader(new InputStreamReader(ips));
   DataOutputStream dos=new DataOutputStream(ops);
    dos.writeBytes("Init_Fail--->out_times");
         }
      catch(Exception xe){}
            e2.fillInStackTrace();
         System.out.println("failed");

     }      
catch(SocketException e1){ //处理底层协议异常
          try{
     InputStream ips=s.getInputStream();
   OutputStream ops=s.getOutputStream();
   BufferedReader br=new BufferedReader(new InputStreamReader(ips));
   DataOutputStream dos=new DataOutputStream(ops);
    dos.writeBytes("Init_Fail-->xieyicuowu");
     }
      catch(Exception xe){}
            e1.fillInStackTrace();
             System.out.println("failed");

          }
catch(Exception e3){
try{
     InputStream ips=s.getInputStream();
   OutputStream ops=s.getOutputStream();
   BufferedReader br=new BufferedReader(new InputStreamReader(ips));
   DataOutputStream dos=new DataOutputStream(ops);
    dos.writeBytes("Init_Fail");
     }
      catch(Exception xe){
            xe.fillInStackTrace();}
         
  e3.printStackTrace();
   System.out.println("failed");

}
}
}
  class testserver2{
    public static void main(String arsgs[]){
    try{
     ServerSocket ss=new ServerSocket(20000);
     while(true){
           System.out.println("Waiting   for   conncetion...");
         Socket s=ss.accept();
            System.out.println("已经接受到请求连接");
         new Thread(new testserver1(s)).start();
      }
     }
     catch(Exception e)
     {
     e.printStackTrace();
     }
}
}


注请求的客户端的C代码我还没有见,是别人写的。写C的那个人说,他用C写了一个服务器端的代码来测试他的请求客户端,结果是正常的,我都晕了。。。。。。。。请教大哥
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表