網路程式設計基礎-socket加入多執行緒
Server端
public class MyServer {
public static ArrayList<Socket> socketList = new ArrayList<Socket>();
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(30000);
while(true) {
Socket s = ss.accept();
socketList.add(s);
new Thread(new ServerThread(s)).start();
}
}
}
public class ServerThread implements Runnable {
Socket s = null;
BufferedReader br = null;
public ServerThread(Socket s) throws IOException {
this.s = s;
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
}
@Override
public void run() {
String content = null;
try {
while ((content = readFromClient()) != null) {
for (Socket s : MyServer.socketList) {
PrintStream ps = new PrintStream(s.getOutputStream());
ps.println(content);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
private String readFromClient() {
try {
return br.readLine();
} catch (IOException e) {
e.printStackTrace();
MyServer.socketList.remove(s);
}
return null;
}
}
Client端
public class MyClient {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket s = new Socket("127.0.0.1", 30000);
new Thread(new ClientThread(s)).start();
PrintStream ps = new PrintStream(s.getOutputStream());
String line = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while((line = br.readLine()) != null) {
ps.println(line);
}
}
}
public class ClientThread implements Runnable {
private Socket s = null;
public BufferedReader br = null;
public ClientThread(Socket s) throws IOException {
this.s = s;
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
}
@Override
public void run() {
String content = null;
try {
while((content = br.readLine()) != null) {
System.out.println(content);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
client 邊讀邊寫
相關文章
- Java多執行緒程式設計基礎Java執行緒程式設計
- 網路程式設計基礎,多執行緒下載程式設計執行緒
- 多執行緒程式設計基礎(一)-- 執行緒的使用執行緒程式設計
- Java-基礎程式設計-多執行緒Java程式設計執行緒
- 多執行緒程式設計基礎知識執行緒程式設計
- java多執行緒程式設計--基礎篇Java執行緒程式設計
- 多執行緒程式設計基礎(二)-- 執行緒池的使用執行緒程式設計
- java多執行緒實現TCP網路Socket程式設計(C/S通訊)Java執行緒TCP程式設計
- 多執行緒程式設計的基礎知識點執行緒程式設計
- java執行緒程式設計(一):執行緒基礎(轉)Java執行緒程式設計
- Linux 環境多執行緒程式設計基礎設施Linux執行緒程式設計
- Linux環境多執行緒程式設計基礎設施Linux執行緒程式設計
- Java多執行緒程式設計基礎知識彙總Java執行緒程式設計
- 網路程式設計基礎-socket基礎程式設計
- Java基礎之多執行緒程式設計Java執行緒程式設計
- 多執行緒系列(1),多執行緒基礎執行緒
- 多執行緒系列(二):多執行緒基礎執行緒
- Java 多執行緒設計模式之基礎概念Java執行緒設計模式
- 多執行緒基礎執行緒
- 多執行緒程式設計執行緒程式設計
- 併發程式設計之多執行緒基礎程式設計執行緒
- Java併發程式設計-執行緒基礎Java程式設計執行緒
- 多執行緒-執行緒控制之加入執行緒執行緒
- 多執行緒學習一(多執行緒基礎)執行緒
- 程式執行緒篇——程式執行緒基礎執行緒
- JavaScript多執行緒程式設計JavaScript執行緒程式設計
- Boost多執行緒程式設計執行緒程式設計
- UNIX多執行緒程式設計執行緒程式設計
- 多執行緒程式設計(轉)執行緒程式設計
- Liunx C 程式設計之多執行緒與Socket程式設計執行緒
- java - 多執行緒基礎Java執行緒
- Java—多執行緒基礎Java執行緒
- Socket程式設計基礎程式設計
- Java 多執行緒基礎(四)執行緒安全Java執行緒
- 多執行緒系列(三):執行緒池基礎執行緒
- 多執行緒基礎-基礎實現執行緒
- .NET多執行緒程式設計(1):多工和多執行緒 (轉)執行緒程式設計
- 執行緒和程式基礎以及多執行緒的基本使用(iOS)執行緒iOS