java 和 C++ socket通信(java作为服务端,C++为客户端)
一个南方人 2012-08-07 12:23:34 java编写的服务端,可以顺利接收到C++客户端的信息.可向客户端返回信息的时候,客户端总是收不到,以下是java服务端的详细代码:
public class dialogserve implements Runnable {
private Socket s;
private BufferedReader br;
private validateClass va;
private boolean b=true;
private DataOutputStream dos;
public dialogserve(Socket ss) {
s = ss;
va=new validateClass();
System.out.println("发现客户端连接请求...");
}
public void run() {
try {
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println("进行验证...");
dos = new DataOutputStream(s.getOutputStream());
if(va.validate(br.readLine())){
System.out.println("验证通过,接收数据中...");
dos.writeUTF("1"); //这里是向客户端返回 dos.flush();
while(b){
String log=br.readLine();
if(log!=null){
System.out.println(log);
//t.getTcpManager(log);
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}else{
dos.writeUTF("0"); //这里也是向客户端返回 dos.flush();
}
br.close();
dos.close();
s.close();
System.out.println("关闭连接.");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
C++的客户端始终收不到返回的信息,我用java写了个客户端,这样是可以接收到返回信息的,java客户端代码如下:
Socket ss=new Socket("127.0.0.1",9090);
DataInputStream dis = new DataInputStream(s.getInputStream());
out=new PrintWriter(s.getOutputStream(),true);
out.println("1,123,201206071,123");
String login=dis.readUTF(); \\接收服务端返回的信息 if(login.equals("1")){
System.out.println("连接成功.");
}
请教一下该怎么向C++客户端返回信息?