客户服务器交互简单的例子改进(1)人有待改进

这次的改进解决了客户与服务器每次交互时必须重建连接的问题,但一旦绑定后,其他客户端不能再连接到服务器。这是一个单线程的服务器。

服务器端:

package Server;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;

import client.user;

public class ServerTest implements Runnable {
 private int port;//端口号
 private ServerSocket server = null;
 
 public ServerTest(){
  this(8000);
 }
 public ServerTest(int port){
  this.port = port;
  
 }
 
 public void run() {
  try {
   server = new ServerSocket(port);
   Socket client = server.accept();
   ObjectInputStream ois = new ObjectInputStream(
     client.getInputStream());
   while(true){
    
    System.out.println(client);
    
    String str;
    try {
        str = (String)ois.readObject();
        System.out.println(str);
    } catch (ClassNotFoundException e) {
     e.printStackTrace();
    }
   }
   
  } catch (IOException e1) { 
   e1.printStackTrace();
  }finally{
   if(server != null)
    try {
     server.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
  }
 }
 
 public static void main(String []args){
  ServerTest s = new ServerTest();
  new Thread(s).start();
 }
}
 

客户端:

package client;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientTest implements Runnable{
private String host;
private int port;
private Socket client;
private BufferedReader br;
private ObjectOutputStream oos;

 ClientTest(){
  this("172.17.4.20",8000);
 }
 ClientTest(String IP,int port){
  this.host = IP;
  this.port = port;
  
  try {
   client = new Socket(host,port);
   
   br = new BufferedReader(new InputStreamReader(System.in));
      
   oos = new ObjectOutputStream(client.getOutputStream());
     
  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 public void run() {
  
  String into;
  while(true){
   try {         
    into= br.readLine();
    oos.writeObject(into);
    oos.flush();
    
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }
 public static void main(String []args){
  ClientTest c = new ClientTest();
  new Thread(c).start();
 }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值