以下是我写的简单服务器socket,程序可以运行,但有一个问题就是只有当前的客户socket可以收到自己发出的信息,其它客户socket不能收到不知道是什么原因,请指点。另外想确认一个问题ServerSocket是不是广播式的,也就是说ServerSocket收到Socket的信息,然后是不是以广播方式向所有的Socket发送信息(我想是这样,我也就是利用这个原理写的这个小程序)package chat;
import java.net.*;
import java.io.*;class ChatServer {
private ServerSocket server=null;
private Socket socket=null;
private int active_connects=0; public ChatServer(int port) {
try {
server = new ServerSocket(port);
accept();
}
catch(Exception e){
System.out.println("Exception " + e);
}
} public void accept (){
while(true) {
try {
socket = server.accept();
if (socket != null) {
System.out.println(socket + "Connection");
}
}
catch(Exception e){
System.out.println("accept errors " + e);
} ListenClient aListenClient = new ListenClient(socket);
Thread newThrd = new Thread(aListenClient);
active_connects ++;
System.out.println("Current Connections " + active_connects);
newThrd.start();
}
}}////////////////////////////////////////////////////////////
class ListenClient implements Runnable {
private Socket socket = null;
private BufferedReader br = null;
private PrintWriter pw = null; ListenClient(Socket s) {
socket = s;
try {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
}
catch(Exception e){
System.out.println("Client Init Errors " + e);
} }
public void run() {
String line = null;
while(true){
try{
line = br.readLine();
if (line != null) {
System.out.println(line);
pw.println(line);
pw.flush();
}
}
catch(Exception e){
System.out.println("Exception run " + e);
}
}
}
} ////////////////////////////////////////////////////////////
class testServer {
public static void main(String[] args) {
int port = 9876;
ChatServer cs = new ChatServer(port); }
}
import java.net.*;
import java.io.*;class ChatServer {
private ServerSocket server=null;
private Socket socket=null;
private int active_connects=0; public ChatServer(int port) {
try {
server = new ServerSocket(port);
accept();
}
catch(Exception e){
System.out.println("Exception " + e);
}
} public void accept (){
while(true) {
try {
socket = server.accept();
if (socket != null) {
System.out.println(socket + "Connection");
}
}
catch(Exception e){
System.out.println("accept errors " + e);
} ListenClient aListenClient = new ListenClient(socket);
Thread newThrd = new Thread(aListenClient);
active_connects ++;
System.out.println("Current Connections " + active_connects);
newThrd.start();
}
}}////////////////////////////////////////////////////////////
class ListenClient implements Runnable {
private Socket socket = null;
private BufferedReader br = null;
private PrintWriter pw = null; ListenClient(Socket s) {
socket = s;
try {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
}
catch(Exception e){
System.out.println("Client Init Errors " + e);
} }
public void run() {
String line = null;
while(true){
try{
line = br.readLine();
if (line != null) {
System.out.println(line);
pw.println(line);
pw.flush();
}
}
catch(Exception e){
System.out.println("Exception run " + e);
}
}
}
} ////////////////////////////////////////////////////////////
class testServer {
public static void main(String[] args) {
int port = 9876;
ChatServer cs = new ChatServer(port); }
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货