Java网络编程聊天室——单线程(二)

通过上一个博客对网络编程的介绍,今天来编写相应的代码。

首先对这个项目做一个小的规划:

目标:单线程的聊天室

功能:

1、服务器

2、客户端

业务:

1、客户端发数据给服务器,服务器接受数据,并打印。

2、服务器相应数据给客户端,客户端接收数据,并打印。

技术:

1、服务器:ServerSocket类

2、客户端:Socket类

3、两个程序:服务器程序、客户端程序

4、JDK8,Maven管理

一、实现步骤: 

(1)创建Maven工程(两个程序:服务器程序,客户端程序)

(2)Maven配置

(3)服务器端实现

a.准备ServerSocket对象

b.接受客户端连接,Socket对象

c.接收数据,发送数据

(4)客户端实现

a.准备Socket对象,连接到服务器端

b.发送数据,接收数据

Maven的多模块可以使项目能够将服务端和客户端连接起来。

我们建立一个chat-room-client和chat-room-sever模块。

pom

    chat-room-client
    chat-room-server

这是聊天室的父工程

聊天室服务端程序:

package com.single.chat.room.server;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

/**
 * 聊天室服务端程序
 * Author:kangfan
 * Created:2019.3.30
 */
public class SingleServer {
    public static void main(String[] args) throws IOException {
       try { //1.创建ServerSocket
           ServerSocket serverSocket = new ServerSocket(7777);

           //2.等待客户端连接
           System.out.println("等待客户端连接...");
           Socket clientSocket=serverSocket.accept();
           System.out.println("客户端信息:"+clientSocket.getRemoteSocketAddress());

           //3.接受和发送数据
           //3.1接受
           InputStream clientInput=clientSocket.getInputStream();
           Scanner scanner=new Scanner(clientInput);
           String clientDate=scanner.next();
           System.out.println("来自客户端的消息:"+clientDate);
           //3.2发送
           OutputStream clientOutput=clientSocket.getOutputStream();
           OutputStreamWriter writer=new OutputStreamWriter(clientOutput);
           writer.write("你好,欢迎连接服务器!\n");
           writer.flush();
       }catch(IOException e){
           e.printStackTrace();
       }
    }
}

聊天室客户端程序:

package com.single.chat.room.client;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;

/**
 * 聊天室的客户端程序
 * Author:kangfan
 * Created:2019.3.30
 */
public class SingleClient {
    public static void main(String[] args) {
        try {
            //1.创建客户端,连接到服务器
            Socket clientSocket=new Socket("127.0.0.1",7777);

            //2.发送数据,接收数据
            //2.1发送数据
            OutputStream clientOutput= clientSocket.getOutputStream();
            OutputStreamWriter writer=new OutputStreamWriter(clientOutput);
            writer.write("你好,我是客户端!\n");
            writer.flush();

            //2.2接收数据
            InputStream clientInput=clientSocket.getInputStream();
            Scanner scanner=new Scanner(clientInput);
            String serverData = scanner.next();
            System.out.println("来自服务端的数据:"+serverData);

            //客户端关闭
            clientInput.close();
            clientOutput.close();
            clientSocket.close();
            System.out.println("客户端关闭");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

配置项目


    
            UTF-8
            1.8
            ${java.version}
            ${java.version}
    

 

你可能感兴趣的:(Java网络编程聊天室——单线程(二))