//server.java
package net_socket;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class server {
private ServerSocket my=null;
private List<getpost> clients = new ArrayList<getpost>();
server()
{
Socket to=null;
try {
my=new ServerSocket(8080);
while(true)
{
try {
to=my.accept();
getpost first=new getpost(to);
new Thread(first).start();
}catch(Exception e)
{
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
private class getpost implements Runnable
{
PrintWriter a=null;
BufferedReader d=null;
Socket s=null;
String name=null;
getpost(Socket tmp) throws IOException
{
this.s=tmp;
a = new PrintWriter(s.getOutputStream(), true);
d= new BufferedReader(new InputStreamReader(s.getInputStream()));
Random r=new Random();
name=((Integer)r.nextInt(100)).toString();
a.println(name+"上线了!");
clients.add(this);
}
void post() throws IOException
{
String str=null;
str=d.readLine();
// System.out.println(str);
for(getpost temp:clients)
{
if(temp!=this)
temp.a.println(this.name+":"+str);
}
}
@Override
public void run() {
while(true)
{
try{
post();
}catch(SocketException e){
System.out.println("link reset.");
try {
s.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//e.printStackTrace();
break;
} catch (IOException e) {
e.printStackTrace();
break;
}
}
}
}
public static void main(String[] args) {
new server();
}
}
//client.java
package net_socket;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class client {
private Socket to=null;
private PrintWriter a=null;
private BufferedReader d=null;
public client() throws UnknownHostException, IOException
{
to=new Socket("127.0.0.1",8080);
a=new PrintWriter(to.getOutputStream(),true);
d= new BufferedReader(new InputStreamReader(to.getInputStream()));
new Thread(new sthread()).start();
while(true)
{
Scanner sc=new Scanner(System.in);
a.println(sc.nextLine());
}
}
void get() throws IOException
{
// byte[] buf = new byte[1024];
// int len = 0;
// while ((len = to.getInputStream().read(buf)) != -1) {
// System.out.println("收到服务端口的语句:" + new String(buf, 0, len));
// }
String rs = d.readLine();
System.out.println(rs);
}
class sthread implements Runnable
{
@Override
public void run() {
while(true)
{
try {
get();
} catch (IOException e) {
e.printStackTrace();
try {
to.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
break;
}
}
}
}
public static void main(String args[])
{
try {
new client();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}