Black Jake 2016-12-18 07:51 采纳率: 33.3%
浏览 844
已结题

java 简单的服务器端与多客户端通信异常的问题

服务器端代码

package service;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.zip.InflaterInputStream;

public class Server {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    ServerSocket ss = null;
    try {
        System.out.println("服务器已启动,等待客户端连接。。。");
        ss = new ServerSocket(8888);
        while (true) {
            Socket s = ss.accept();
            new serverthread(s).start();
            s.close();
        }

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

}
class serverthread extends Thread {
Socket s = null;
String str;

public serverthread(Socket socket) {
    super();
    this.s = socket;
    System.out.println("一个客户端已经连接上");
}
PrintStream out=null;
BufferedReader in =null;
@Override
public void run() {
    // TODO Auto-generated method stub
    try {
        System.out.println(s.getLocalPort());
        out=new PrintStream(s.getOutputStream(), true);
        in=new BufferedReader(new InputStreamReader(s.getInputStream()));//获取客户端套接字输入输出流
        str=in.readLine();
        System.out.println("客户端用户名"+str);
        if (str.equals("JSIT")) {
            out.println("用户名正确");
        }else
            out.println("用户名不存在");

    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
}

}

客户端代码

package client;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Clint2 {

public static void main(String[] args) {
    // TODO Auto-generated method stub
   try {
    Socket s=new Socket("127.0.0.1", 8888);
    PrintStream out=new PrintStream(s.getOutputStream());
    BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
    BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
    System.out.print("用户名:");
    String str=stdin.readLine();
    out.println(str);
    System.out.println(in.readLine());
    in.close();
    out.close();
} catch (UnknownHostException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}

}
我先运行了服务端,再运行客户端时会报socket is closed的异常,是什么原因?

  • 写回答

2条回答 默认 最新

  • dsxjinzhiqiang 2016-12-18 10:42
    关注

    你写反了吧,这是多个服务端与一个客户端的连接,而且多个服务端,用一个端口号,肯定报错

    评论

报告相同问题?

悬赏问题

  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常