您的位置:首页 > 编程语言 > Java开发

java socket 编程经典实例

2013-10-31 21:04 369 查看

服务器监听、并接收每个客户端的信息再群发到每个客户端

服务端

package com.java.xiong.Net17;

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

public class RunableSocket implements Runnable {
// 定义当前线程处理的Socket
private Socket socket = null;
// 该线程对用的输入流
private BufferedReader read = null;

public RunableSocket(Socket s) throws IOException {
this.socket = s;
read = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
}

@Override
public void run() {
String line=null;
try{
while((line=getClentData())!=null){
for(Socket s:MyServer.list){
//向每个客户端输出信息
PrintStream print=new PrintStream(s.getOutputStream());
print.println(line);
}
}

}catch(IOException  io){
io.printStackTrace();
}

}
//读取客户端数据的方法
public String getClentData(){
String line=null;
try{
line=read.readLine();
}catch(IOException io){
MyServer.list.remove(socket);
}
return line;
}

}


package com.java.xiong.Net17;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class MyServer {

public static List<Socket> list=new ArrayList<Socket>();

public static void main(String [] args) throws Exception{
ServerSocket  server=new ServerSocket(30001);
while(true){
Socket scoket=server.accept();
list.add(scoket);
new Thread(new RunableSocket(scoket)).start();
}

}

}


客户端

package com.java.xiong.Net17;

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

//将服务器返回的数据打印出来
public class RubableClient implements Runnable {

private Socket socket;
private BufferedReader read;

public RubableClient(Socket socket) throws IOException {
this.socket = socket;
this.read = new BufferedReader(new InputStreamReader(
this.socket.getInputStream()));
}

@Override
public void run() {
try{
String line=null;
while((line=read.readLine())!=null){
System.out.print(line);
}

}catch(IOException  io){
io.printStackTrace();
}

}

}


package com.java.xiong.Net17;

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 MyClient {

public static void main(String[] args) throws Exception, IOException {

//向服务器发送请求
Socket socket = new Socket("127.0.0.1", 30001);
new Thread(new RubableClient(socket)).start();
//获取输出流
PrintStream print = new PrintStream(socket.getOutputStream());
String line = "";
BufferedReader read = new BufferedReader(new InputStreamReader(
System.in));
while((line=read.readLine())!=null){
//写入Socket对应的输出流
print.println(line);
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: