一个hello/hi的简单的网络聊天程序--JAVA

使用java实现了server/client对话的功能。

运行时需先运行服务端,再运行客户端。

每次客户端发送一条消息,服务端接收一条消息,然后服务端再发送一条消息,客户端再接收一条消息。

程序实现如下:

客户端:

 1 public class Client {
 2     static Socket client;
 3 
 4     public Client() {
 5         try {
 6             //链接 本机的 9999 端口
 7             client = new Socket("127.0.0.1", 9999);
 8         } catch (Exception e) {
 9             System.out.println("Client输入输出错误!" + e);
10         }
11     }
12 
13     public static void send(String msg) {
14         try {
15             //获得实时刷新的输出流
16             PrintWriter out = new PrintWriter(client.getOutputStream(), true);
17             out.println("Client:" + msg);
18             //out.close();
19         } catch (IOException e) {
20             System.out.println("send输入输出错误!" + e);
21         }
22     }
23 
24     public static void listen() {
25         try {
26             System.out.println("Listening!......");
27             //获得输入流
28             InputStreamReader in = new InputStreamReader(client.getInputStream());
29             BufferedReader br = new BufferedReader(in);
30             //读取一行并打印出来
31             System.out.println(br.readLine());
32         } catch (IOException e) {
33             System.out.println("Listen ERRO!" + e);
34         }
35     }
36 
37     public static void main(String[] args) {
38         String msg = "";
39         Client cl = new Client();
40         Scanner cin = new Scanner(System.in);
41         while (!msg.equals("#")) {
42             //cl=new Client();
43             System.out.print("输入信息:");
44             msg = cin.nextLine();
45             cl.send(msg);
46             cl.listen();
47         }
48     }
49 }

服务端:

 1 public class Server {
 2     static ServerSocket server;
 3     static Socket s;
 4     public Server(){
 5         try {
 6             System.out.println("启动服务器!");
 7             //监听本地9999端口
 8             server = new ServerSocket(9999);
 9             //等待客户端链接创建Socket对象
10             s = server.accept();
11         }catch(IOException e){
12             System.out.println("输入输出错误!"+e);
13         }
14     }
15     public void listen(){
16         try {
17             System.out.println("Listening!......");
18             //从Socket中获得输入流
19             InputStreamReader in = new InputStreamReader(s.getInputStream());
20             BufferedReader br=new BufferedReader(in);
21             //读取输入流中的一行并输出
22             System.out.println(br.readLine());
23         }catch(IOException e){
24             System.out.println("输入输出错误!"+e);
25         }
26     }
27     public static void send(String msg)
28     {
29         try {
30             //从Socket中获得<span style="color:#FF0000;">实时刷新</span>输出流,
31             PrintWriter out=new PrintWriter(s.getOutputStream(),true);
32             //向输出流中写入一行数据
33             out.println("Server:"+msg);
34         }catch(IOException e){
35             System.out.println("send输入输出错误!"+e);
36         }
37     }
38     public static void main(String[] args){
39         Server se=new Server();
40         String msg="";
41         Scanner cin=new Scanner(System.in);
42         //输入“#” 表示停止
43         while(!msg.equals("#")) {
44             //接收信息
45             se.listen();
46             System.out.print("输入信息:");
47             msg=cin.nextLine();
48             //发送信息
49             se.send(msg);
50         }
51     }
52 }

程序执行如下图所示:

socket通信的基本步骤:

扫描二维码关注公众号,回复: 8124762 查看本文章

 (1)在服务器端指定一个端口号创建ServerSocket,调用accept()方法等待接收来自客户端的连接。

 (2)客户端创建socket连接服务端。

 (3)打开socket的输入输出流。

 (4)利用输入输出流对socket进行读写

 (5)关闭流和socket

如下图所示为java socket的API:

java中创建一个socket实际上对应了linux中socket API中的socket的创建,bing()及listen()。

java中socket的accept方法对应socket API中的accept(),java中的socket的输入流的readLine()则对应着socket API中的recv()方法。

猜你喜欢

转载自www.cnblogs.com/mingjian6666/p/12010510.html
今日推荐