将由键盘输入改为传入一个字符串public static void main(String[] args) throws Exception {
server = new Socket(InetAddress.getLocalHost(), 5678);
BufferedReader in = new BufferedReader(new InputStreamReader(server
.getInputStream()));
PrintWriter out = new PrintWriter(server.getOutputStream());
BufferedReader wt = new BufferedReader(new InputStreamReader(System.in)); while (true) {
String str = wt.readLine();
out.println(str);
out.flush();
if (str.equals("end")) {
break;
}
System.out.println(in.readLine());
}
server.close();
}

解决方案 »

  1.   

    System.in
    晕!代码中颜色没有作用
      

  2.   

    String str=直接等于传入的字符串就行了么
      

  3.   

    有问题? 一般很少在socket上使用缓冲IO
      

  4.   

    要是server端的话很少想这种用法
      

  5.   

    我是将这个程序改为从jsp页面得到数据,因此需要将由键盘输入改为传入一个字符串。
    麻烦哪位高手帮帮忙!!!
      

  6.   

    我是将这个程序改为从jsp页面得到数据,因此需要将由键盘输入改为传入一个字符串。 
    麻烦哪位高手帮帮忙!!!
      

  7.   

    lz贴了一段代码,到底想干嘛呀...从jsp页面获得数据就不要用socket了,用httpclient就可以了吧
      

  8.   

    原代码的数据是从键盘输入,现在需要改为jsp页面获得数据,System.in 改为传入一个String的参数。
      

  9.   


    public class SocketClient {
    static Logger log = Logger.getLogger(SocketClient.class.getName()); // 日志记录信息
    private String hostName;
    private int portNum;
    private int delaySecond; // 发文接收返回报文延时 public SocketClient() {
    this.hostName = "192.168.0.123";
    this.portNum = 5479;
    this.delaySecond = 50000;
    } private Socket getSocket() {
    Socket socket = null;
    try {
    socket = new Socket(hostName, portNum);
    } catch (UnknownHostException e) {
    System.out.println("-->未知的主机名:" + hostName + " 异常");
    } catch (IOException e) {
    System.out.println("-hostName=" + hostName + " portNum=" + portNum
    + "---->IO异常错误" + e.getMessage());
    }
    return socket;
    } public String sendMessage(String strMessage) {
    String str = "";
    String serverString = "";
    Socket socket;
    try {
    socket = getSocket();
    // socket.setKeepAlive(true);
    if (socket == null) { // 未能得到指定的Socket对象Socket通讯为空
    return "0001";
    }
    PrintWriter out = new PrintWriter(socket.getOutputStream());
    // log.info("---->发送报文="+strMessage);
    out.println("CHK;0;"+strMessage);
    out.flush();
    BufferedReader in = new BufferedReader(new InputStreamReader(socket
    .getInputStream()));
    long sendTime = System.currentTimeMillis();
    long receiveTime = System.currentTimeMillis();
    boolean received = false; // 成功接收报文
    boolean delayTooLong = false;
    serverString = null;
    while (!received && !delayTooLong) {
    if (socket.getInputStream().available() > 0) {
    // serverString = in.readLine();
    char tagChar[];
    tagChar = new char[1024];
    int len;
    String temp;
    String rev = "";
    if ((len = in.read(tagChar)) != -1) {
    temp = new String(tagChar, 0, len);
    rev += temp;
    temp = null;
    }
    serverString = rev;
    }
    receiveTime = System.currentTimeMillis();
    if (serverString != null)
    received = true; // 字符串不为空,接收成功
    if ((receiveTime - sendTime) > delaySecond)
    delayTooLong = true; // 接收等待时间过长,超时
    } in.close();
    out.close();
    str = serverString;
    if (delayTooLong)
    str = "2190"; // 超时标志为真,返回超时码
    // if (
    // ..} in.close();
    out.close();
    str = serverString;
    if (delayTooLong)
    str = "2190"; // 超时标志为真,返回超时码
    if (!received)
    str = "2190";
    socket.close();
    } catch (UnknownHostException e) {
    log.error("---->出现未知主机错误! 主机信息=" + this.hostName + " 端口号="
    + this.portNum + " 出错信息=" + e.getMessage());
    str = "2191";
    // System.exit(1);
    } catch (IOException e) {
    log.error("---->出现IO异常! 主机信息=" + this.hostName + " 端口号="
    + this.portNum + " 出错信息=" + e.getMessage());
    e.printStackTrace();
    str = "2191";
    } catch (Exception e) {
    str = "2177";
    log.error("---->出现未知异常" + e.getMessage());
    } finally {
    socket = null;
    str.trim();
    // log.info("--->返回的socket通讯字符串="+str); }
    return str;
    }}