您的位置:首页 > 理论基础 > 计算机网络

使用java实现Server和Client(TCP)

2014-10-17 00:00 681 查看
Server.java

import java.io.*;
import java.net.*;

public class Server {

public static final int PORT=8888;

public void Server() throws IOException {
ServerSocket ss = new ServerSocket(PORT);
InetAddress ia = InetAddress.getByName(null);

System.out.println("Server@"+ia+" start!");

try{
while(true){
Socket s = ss.accept();// listen PORT;
try{
new ServerOne(s);
} catch (IOException e) {
s.close();
}
}
}finally{
ss.close();
System.out.println("Server stop!");
}
}
}

class ServerOne extends Thread {
private Socket s;
private BufferedReader in;
private PrintWriter out;
public ServerOne(Socket s) throws IOException {
this.s = s;
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintWriter(new BufferedWriter
(new OutputStreamWriter(s.getOutputStream())), true);
start();
}
public void run(){
try {
while(true) {
String str = in.readLine();
if(str.equals("end")) break;
System.out.println("Server: receive information"+str);
out.println("Echo: "+str);
}
System.out.println("closing....");
} catch (IOException e){
} finally {
try{
s.close();
}catch(IOException e){}
}
}
}


Client.java:

import java.io.*;
import java.net.*;

public class Client extends Thread {
static final int MAX_THREADS=25;
private static int id = 0;
private static int threadCount = 0;
private Socket s;
private BufferedReader in;
private PrintWriter out;

public static int getThreadCount(){
return threadCount;
}

public Client(InetAddress ia){
threadCount++;
id++;
System.out.println("Making client: " + id);
try{
s = new Socket(ia, Server.PORT);
} catch (IOException e) {}
try{
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintWriter(new BufferedWriter
(new OutputStreamWriter(s.getOutputStream())), true);
start();
}catch(IOException e1){
try{
s.close();
}catch(IOException e2){
System.out.println("Error in Client\n");
}
}

}

public void run() {
try{
String str;
for(int i = 0; i < 5; i++) {
out.println("Client #"+id+":"+i);
str=in.readLine();
System.out.println("Client: send message#"+id+":"+i+"\n"
+"Server reply: "+str);
}
out.println("end");
}catch(IOException e){
}finally{
try {
s.close();
} catch (IOException e){}
}
}

public static void main(String args[]) throws IOException, InterruptedException {
InetAddress ia = InetAddress.getByName(null); //null mean localhost
while(true){
if(getThreadCount() < MAX_THREADS)
new Client(ia);
else break;
Thread.currentThread().sleep(10);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  server java tcp
相关文章推荐