public static void main(String[] args) throws IOException { // TODO Auto-generated method stub final ServerSocket server = new ServerSocket(8090); System.out.println("服务器已经启动" + server); // 开启一个线程,时刻监听客户端发送过来的连接请求 new Thread() { public void run() { super.run(); while (true) { try { Socket client = server.accept();// 服务器接收到链接进来的客户端 System.out.println("有客户端链接进来" + client); // 处理接收到的数据 // 由于服务器不知道客户端什么时候发送数据过来,所以要创建等待线程,时刻等待处理客户端发送过来的额数据 WaitThread waitThread = new WaitThread(client); waitThread.start(); } catch (IOException e) { e.printStackTrace(); } } } }.start(); } // 等待线程 public static class WaitThread extends Thread { private Socket client; // 服务端使用输入流读取数据 private DataInputStream reader; private DataOutputStream writer; // 在构造等待线程的时候,给客户端赋值 public WaitThread(Socket client) { super(); this.client = client; } public void run() { super.run(); // 循环等待处理数据 while (true) { if (reader == null) { // 根据客户端发来的输入流,创建服务器读取数据的流reader try { reader = new DataInputStream(client.getInputStream()); } catch (IOException e) { e.printStackTrace(); } } try { String msg = reader.readUTF(); //客户端再将消息返回到客户端 System.out.println(msg); if(writer==null){ try { writer=new DataOutputStream(client.getOutputStream()); writer.writeUTF(msg+client); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } catch (IOException e) { e.printStackTrace(); } } } } }
1 回答
书生
TA贡献12条经验 获得超4个赞
使用socket过于底层,开发难度很高
建议直接使用webservice框架,比如springmvc,或者一些restful webservice框架,可以很方便的接收请求与返回数据。
如果不想使用第三方框架,直接使用servlet也可以。
需要java容器作为代码承载,比如tomcat或者jetty
添加回答
举报
0/150
提交
取消