您好:
最近由于一个项目的需要,客户端发送一个请求数据,服务端接受以后根据数据做出不同的回。我用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写了一个服务器端的代码来测试他的请求客户端,结果是正常的,我都晕了。。请教大哥
最近由于一个项目的需要,客户端发送一个请求数据,服务端接受以后根据数据做出不同的回。我用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写了一个服务器端的代码来测试他的请求客户端,结果是正常的,我都晕了。。请教大哥
解决方案 »
- 如何将\u4e30类似的字符转换成中文
- SWING界面问题:BalloonTip包的BalloonBorder代码在哪里下?
- 关于jsplitpane的问题,up有分,多谢啦~
- 问个socket的初学问题
- 如何才能在java中实现类似QQ好友头像的非规则图像按钮,急等!分数不够还可以再开帖加分
- 为何插入数据有误??
- 如何执行不在同一目录的.class文件?
- jdbc连接数据库显示找不到类异常0-0
- 本站论坛诚招“版主”一名
- 一起谈谈IBM Application Developer 。来者有分。
- 设计一个简单计算器(qiu算法的优化)
- 为什么我的keylistener不响应(加入了一个小线程)帮帮我
也就是可以连上,也走了ACCPET,就是接收不到数据。不知道输入输出流的问题,不知道JAVA和C有什么区别?
我就会一直等待出现回车换行,如果那样就死了。
谢谢大家