java socket 实现服务端与客户端------一对多的服务端和客户机
2014-10-09 12:32
495 查看
http://www.51testing.com/html/48/202848-122580.html
//一对多的服务端和客户机:一个服务端能同时服务多个客户端,需要使用多线程来实现
//服务端:调用具体的处理线程完成处理
package com.socket.multiserver;
import java.io.*;
import java.net.*;
import com.socket.multiserver.ChildTh;
public class MyMultiServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);
while (true){
Socket client=server.accept();
ChildTh child=new ChildTh(client);//用socket实例初始化具体的处理线程对象
//使用Runnable接口和使用extends Thread的区别:
// 如果是使用Runnable接口,需要这么写:
new Thread(child).start();
//注意:不能写成:child.run();
// 如果使用extends Thread,只需要child.start()就可以,因为start()是Thread的方法
}
}
}
============================================================
//处理线程类:
package com.socket.multiserver;
import java.io.*;
import java.net.*;
public class ChildTh implements Runnable{
private Socket client;
public ChildTh(Socket client){
this.client=client;
}
public void run(){
try{
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter ut=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println("has receive....");
out.flush();
if(str.equals("end"))
break;
}
client.close();
}catch(Exception e){
System.out.println("error in the close the socket!");
e.printStackTrace();
}
finally{
}
}
}
===========================================================
//客户端
package com.socket.multiserver;
import java.net.*;
import java.io.*;
public class MyMultiClient{
static Socket client;
public static void main(String[] args)throws Exception{
client=new Socket(InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter ut=new PrintWriter(client.getOutputStream());
//从标准输入接收数据
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true){
String str=wt.readLine();
//String str = "jonathan";
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());
}
client.close();
}
}
//一对多的服务端和客户机:一个服务端能同时服务多个客户端,需要使用多线程来实现
//服务端:调用具体的处理线程完成处理
package com.socket.multiserver;
import java.io.*;
import java.net.*;
import com.socket.multiserver.ChildTh;
public class MyMultiServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);
while (true){
Socket client=server.accept();
ChildTh child=new ChildTh(client);//用socket实例初始化具体的处理线程对象
//使用Runnable接口和使用extends Thread的区别:
// 如果是使用Runnable接口,需要这么写:
new Thread(child).start();
//注意:不能写成:child.run();
// 如果使用extends Thread,只需要child.start()就可以,因为start()是Thread的方法
}
}
}
============================================================
//处理线程类:
package com.socket.multiserver;
import java.io.*;
import java.net.*;
public class ChildTh implements Runnable{
private Socket client;
public ChildTh(Socket client){
this.client=client;
}
public void run(){
try{
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter ut=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println("has receive....");
out.flush();
if(str.equals("end"))
break;
}
client.close();
}catch(Exception e){
System.out.println("error in the close the socket!");
e.printStackTrace();
}
finally{
}
}
}
===========================================================
//客户端
package com.socket.multiserver;
import java.net.*;
import java.io.*;
public class MyMultiClient{
static Socket client;
public static void main(String[] args)throws Exception{
client=new Socket(InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter ut=new PrintWriter(client.getOutputStream());
//从标准输入接收数据
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true){
String str=wt.readLine();
//String str = "jonathan";
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());
}
client.close();
}
}
相关文章推荐
- Java Socket实现多个客户端连接同一个服务端
- 基于Socket的TCP长连接(服务端Java+客户端Android),Service配合AIDL实现
- JAVA 网络编程 Socket 详细说明,实现客户端和服务端相互推送消息
- Java中利用socket实现简单的服务端与客户端的通信(基础级)
- Java中利用socket实现简单的服务端与客户端的通信(入门级)
- Java基于socket实现的客户端和服务端通信功能完整实例
- Java IO——Socket:通过多线程实现多客户端与一个服务端通信
- Java中使用socket实现客户端与服务端交互
- Java IO——Socket:通过多线程实现多客户端与一个服务端通信
- Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信
- java实现socket客户端连接服务端
- java如何通过socket实现服务端与客户端交互
- Socket通讯(objetive-c)客户端与(JAVA)服务端的特殊点
- 第一个java网络程序,有客户端和服务器端,用socket实现
- python socket上传文件的服务端和客户端实现
- VC客户端与Java服务端Socket通讯简例
- socket ( java ) 简单多个客户端、服务端通信(多线程)
- Java做Socket服务端与Delphi做Socket客户端的通信
- python socket上传文件的服务端和客户端实现
- socket ( java ) 简单客户端、服务端通信