会计考友 发表于 2012-8-4 12:44:44

Java认证之Javasocket应用的几个小实例

Java认证之Javasocket应用的几个小实例
用于本机上的客户端与服务器对话的小程序:
客户端:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class Client extends Thread
{
public void Write() throws Exception
{
Socket s=new Socket(“127.0.0.1”,12345);
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String message=“客户端说:”;
while(!(message.equals(“”)))
{
message=br.readLine();
System.out.println(“客户端说:”+message);
bw.write(message+“\n”);
bw.flush();
}
bw.close();
s.close();
}
public void run()
{
Socket m=null;
BufferedReader dr=null;
try
{
m=new Socket(“127.0.0.1”,12345);
dr=new BufferedReader(new InputStreamReader(m.getInputStream()));
String msg=“服务器说:”;
while(!(msg.equals(“”)))
{


msg=dr.readLine();
System.out.println(“服务器说:”+msg);
}
}
catch(Exception e){e.printStackTrace();}
finally
{
try
{
dr.close();
m.close();
}
catch(Exception e){e.printStackTrace();}
}
}
public static void main(String args[])throws Exception
{
Client c=new Client();
c.start();
c.Write();
}
}
服务器:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server extends Thread
{
private ServerSocket ss=null;
public Server ()throws Exception
{
ss=new ServerSocket(12345);
}


public void Write()throws Exception
{
Socket s=ss.accept();
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String message=“服务器说:”;
while(!(message.equals(“”)))
{
message=br.readLine();
System.out.println(“服务器说:”+message);
bw.write(message+“\n”);
bw.flush();
}
//bw.close();
s.close();
}
public void run()
{
Socket m=null;
BufferedReader dr=null;
try
{
m=ss.accept();
dr=new BufferedReader(new InputStreamReader(m.getInputStream()));
String msg=“客户端说:”;
while(!(msg.equals(“”)))
{
msg=dr.readLine();
System.out.println(“客户端:”+msg);
}
}
catch(Exception e){e.printStackTrace();}
finally
{
try
{
dr.close();
m.close();
}
catch(Exception e){e.printStackTrace();}
}
}


public static void main(String args[])throws Exception
{
Server s=new Server();
s.start();
s.Write();
}
}
用于本地群聊的小程序:
客户端:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class Friendclient extends Thread
{
public void Writer() throws Exception
{
Socket s=new Socket(“127.0.0.1”,54321);
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String message=“本客户端说:”;
while(!(message.equals(“goodbye”)))
{
message=br.readLine();
System.out.println(“客户端说:”+message);
bw.write(message+“\n”);
bw.flush();
}
bw.close();s.close();
}


public void run()
{
BufferedReader bq=null;
Socket st=null;
try
{
st=new Socket(“127.0.0.1”,54321);
bq=new BufferedReader(new InputStreamReader(st.getInputStream()));
String msg=“其他客户端说:”;
while(!(msg.equals(“”)))
{
msg=bq.readLine();
System.out.println(“其他客户端说:”+msg);
}
}
catch(Exception e){e.printStackTrace();}
finally
{
try
{
bq.close();st.close();
}
catch(Exception e){e.printStackTrace();}
}
}
public static void main(String args[])throws Exception
{
Friendclient ft=new Friendclient();
ft.start();
ft.Writer();
}
}


服务器端:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
public class Allserver
{
private ServerSocket ss=null;
private static ArrayList《Socket》 al=new ArrayList《Socket》();
public Allserver() throws Exception
{
ss=new ServerSocket(54321);
while(true)
{
Socket s=ss.accept();
al.add(s);
new Mtherd(s).start();
}
}
private class Mtherd extends Thread
{
private Socket sd=null;
private BufferedReader br=null;
//private BufferedWriter bw=null;
public Mtherd(Socket sd)throws Exception
{
this.sd=sd;
br=new BufferedReader(new InputStreamReader(sd.getInputStream()));
//bw=new BufferedWriter(new OutputStreamWriter(sd.getOutputStream()));
}
public void run()
{


try
{
String gh=“。..。..。..。..。..。..。”;
while(true)
{
gh=br.readLine();
setAll(gh);
}
}
catch(Exception e){e.printStackTrace();}
}
public void setAll(String x)throws Exception
{
Socket ss=null;
BufferedWriter bv=null;
for(int i=0;i《al.size();i++)
{
ss=(Socket)al.get(i);
bv=new BufferedWriter(new OutputStreamWriter(ss.getOutputStream()));
bv.write(x+“\n”);
bv.flush();
}
}
}
public static void main(String args[])throws Exception
{
new Allserver();
}
}
注:几个小程序结构粗糙,不适合实际应用,只为充分了解java socket和多线程!
页: [1]
查看完整版本: Java认证之Javasocket应用的几个小实例