62,614
社区成员
发帖
与我相关
我的任务
分享
==========================================================================================
server:
import java.net.*;
import java.io.*;
import java.util.*;
public class ServerSocketDemo
{
public static void main(String[] args)
{
ArrayList list = new ArrayList();
ServerSocket ss = null;
try {
ss =new ServerSocket(8189);
while(true)
{
Socket s=ss.accept();
list.add(s);
new ReverseDemo(s,list);
}
}catch( Exception ex ) {
}
try {
ss.close();
}catch( Exception ex ) {
}
}
}
import java.net.*;
import java.io.*;
import java.util.*;
public class ReverseDemo extends Thread
{
BufferedReader in=null;
PrintWriter out=null;
String str="abc";
ArrayList list;
Socket s;
public ReverseDemo(Socket s,ArrayList list)
{
this.list=list;
this.s=s;
this.start();
}
public void run()
{
try
{
InputStream inStream = s.getInputStream();
OutputStream outStream = s.getOutputStream();
PrintWriter out = new PrintWriter(outStream, true /* autoFlush */);
System.out.println(s.getInetAddress().getHostAddress()+" connected-------");
out.println("连接成功!");
byte[] buf = new byte[1024];
while(true)
{
int bytes_read = inStream.read( buf );
if( bytes_read < 0 ) {
break;
} else {
broadcast( buf, 0, bytes_read );
}
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally {
list.remove( s );
}
}
void broadcast( byte[] b, int offset, int length ) {
for( int i = 0, n = list.size(); i < n; i++ ) {
Socket sock = (Socket) list.get( i );
if( sock != s ) {
try {
sock.getOutputStream().write( b, offset, length );
sock.getOutputStream().flush();
}catch( Exception ex ) {
}
}
}
}
}
===================================================================================
client:
/**
@version 1.20 2004-08-03
@author Cay Horstmann
*/
import java.io.*;
import java.net.*;
import java.util.*;
/**
This program makes a socket connection to the atomic clock
in Boulder, Colorado, and prints the time that the
server sends.
*/
public class SocketTest
{
private Socket sock_;
private byte[] name_;
public SocketTest( String host, int port, byte[] name ) throws Exception {
name_ = name;
sock_ = new Socket( host, port );
Thread th = new Thread( createMsgRecvRunnable() );
th.start();
byte[] b = new byte[ 1024 ];
int bytes_read = readMsg( b );
while( bytes_read > 0 ) {
sendMsg( b, 0, bytes_read );
bytes_read = readMsg( b );
}
}
private Runnable createMsgRecvRunnable() {
return new Runnable() {
public void run() {
try {
InputStream in = sock_.getInputStream();
byte[] buf = new byte[1024];
while( true ) {
int bytes_read = in.read( buf );
if( bytes_read < 0 ) {
break;
} else {
System.out.write( buf, 0, bytes_read );
}
}
}catch( Exception ex ) {
}
}
};
}
private int readMsg( byte[] b ) throws Exception {
return System.in.read( b );
}
private void sendMsg( byte[] msg, int offset, int length ) throws Exception {
sock_.getOutputStream().write( name_ );
sock_.getOutputStream().write( msg, offset, length );
sock_.getOutputStream().flush();
}
public static void main( String[] args ) {
try {
String name = null;
if( args.length > 0 ) {
name = args[0] + ":";
} else {
name = "unknown:";
}
SocketTest test = new SocketTest( "localhost", 8189, name.getBytes() );
}catch( Exception ex ) {
ex.printStackTrace();
}
}
}
package houlei.chatRoom;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Iterator;
import java.util.Vector;
public class Server implements Runnable {
private Thread instance;
private boolean running=false;
private Socket socket;
private Vector set;
public Server(Socket socket, Vector set) {
this.socket=socket;this.set=set;
}
public void run() {
while(running){
try {
InputStream in = socket.getInputStream();
if(in.available()>0){
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = br.readLine();
Iterator itr = set.iterator();
while(itr.hasNext()){
Server s = (Server)itr.next();
if(this.equals(s)==false)
s.sendLine(line);
}
}
Thread.sleep(10);
} catch (IOException e) {
stop();
} catch (InterruptedException e) {
}
}
}
private void sendLine(String line) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write(line);
bw.newLine();
bw.flush();
}
public static void main(String[] args) throws IOException {
int port = 8189;
ServerSocket ss = new ServerSocket(port);
Vector set = new Vector();
while(true){
Server s = new Server(ss.accept(),set);
set.add(s);
s.start();
}
}
private void start() {
if(running)return;
running=true;
instance=new Thread(this);
instance.start();
}
private void stop(){
if(running){
running=false;
set.remove(this);
if(socket!=null && socket.isConnected()){
try {
socket.close();
} catch (IOException e) {
}
}
instance.interrupt();
}
}
}
package houlei.chatRoom;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws Exception {
String serverIp = "127.0.0.1";
int serverPort = 8189;
Socket s = new Socket(serverIp,serverPort);
InputStream input = s.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
InputStream in = System.in;
while(s.isConnected()){
if(in.available()>0){
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = br.readLine();
writer.write(line);
writer.newLine();
writer.flush();
}
if(input.available()>0){
String line = reader.readLine();
System.out.println(line);
}
Thread.sleep(10);
}
}
}