java socket应用的几个小实例

本文介绍使用 Java Socket 进行本地客户端与服务器通信及群聊功能实现的方法。包括两个小程序,一是简单的客户端与服务器之间的对话,二是实现本地多客户端群聊功能。每个程序都分为客户端和服务端部分,并通过多线程技术实现并发处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用于本机上的客户端与服务器对话的小程序:

客户端:

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和多线程!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值