siwalet 2011-05-13 16:58
浏览 710
已采纳

socket服务端可以接受消息但是无法返回的问题

这是服务端代码
[code="java"]
package com.hj.demo.socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
public Server() throws IOException {
ServerSocket ss = new ServerSocket(7777);
while (true) {
Socket sk = ss.accept();
ClientThread ct = new ClientThread(sk);
ct.start();
System.out.println("服务端已启动...");
}

}

// 多线程客户端
class ClientThread extends Thread {
    private Socket clientSocket = null;

    public ClientThread(Socket clientSocket) {
        this.clientSocket = clientSocket;
    }
    DataInputStream dis = new DataInputStream(null);
    @SuppressWarnings("deprecation")
    @Override
    public void run() {
        // TODO Auto-generated method stub

        String hostName = clientSocket.getInetAddress().toString();
        System.out.println("hostName:>" + hostName+"已连接");
        String msg = null;
        try {
            dis = new DataInputStream(clientSocket
                    .getInputStream());
            while (true) {
                msg =  dis.readUTF();
                System.out.println(hostName + "发来的消息>: " + msg);
                if(null==dis.readLine()||"".equals(dis.readLine())){
                    break;
                }

            }
            if(!"".equals(msg)&&msg.length()!=0){

                DataOutputStream dos = new DataOutputStream(clientSocket.getOutputStream());
                String rep = "我是返回给由"+hostName+"发来["+msg+"]的消息";
                System.out.println(rep);
                dos.writeUTF(rep);
                dos.close();
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        super.run();
    }

}

public static void main(String[] args) throws IOException {
    new Server();

}

}
[/code]

这是客户端的代码
[code="java"]
package com.hj.demo.socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

public static void main(String[] args) throws UnknownHostException,
        IOException, InterruptedException {

    Socket sk = new Socket("127.0.0.1", 7777);
    DataOutputStream dos = new DataOutputStream(sk.getOutputStream());
    DataInputStream dis = new DataInputStream(sk.getInputStream());
    dos.writeUTF("hello,world");
    String rep  =  dis.readUTF();
    System.out.println("主机返回的消息>: " + rep);
        dos.close();
        dis.close();
}

}

[/code]

服务端可以接收发来的消息,但是返回就不行,求解答!

  • 写回答

6条回答 默认 最新

  • qianzhi008 2011-05-13 17:05
    关注

    [code="java"]
    if(!"".equals(msg)&&msg.length()!=0){

                    DataOutputStream dos = new DataOutputStream(clientSocket.getOutputStream());  
                    String rep = "我是返回给由"+hostName+"发来["+msg+"]的消息";  
                    System.out.println(rep);  
                    dos.writeUTF(rep);  
                    [color=red]dos.flush(); [/color] 
                    dos.close();  
                }  
    

    [/code]
    这边要调用一下flush方法,刷新一下,让服务器端把数据发送出去。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥20 materialstudio计算氢键脚本问题
  • ¥15 配置FPT报错,该如何处理
  • ¥15 请大家看一下这个代码咋写,一点思路都没有,最好能做一下,不要伪代码,有偿
  • ¥15 有偿请人帮写个安卓系统下禁止装软件及禁止拷入文件的程序
  • ¥100 用 H.265 对音视频硬编码 (CUDA)
  • ¥20 mpich安装完成后出问题
  • ¥15 stm32循迹小车代码问题
  • ¥15 输入一堆单词,使其去重输出
  • ¥15 qc代码,修改和添加东西
  • ¥50 Unity的粒子系统使用shadergraph(内置管线)制作的一个顶点偏移shader,但是粒子模型移动时,顶点也会偏移