通过上一个博客对网络编程的介绍,今天来编写相应的代码。
首先对这个项目做一个小的规划:
目标:单线程的聊天室
功能:
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模块。
<packaging>pom</packaging>
<modules>
<module>chat-room-client</module>
<module>chat-room-server</module>
</modules>
<description>这是聊天室的父工程</description>
聊天室服务端程序:
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();
}
}
}
配置项目
<!--配置项目属性-->
<properties>
<encoding>UTF-8</encoding>
<java.version>1.8</java.version>
<maven.compiler.target>${java.version}</maven.compiler.target>
<maven.compiler.source>${java.version}</maven.compiler.source>
</properties>
本文介绍了一个简单的单线程聊天室程序实现,包括服务器端和客户端的代码编写过程。使用Java语言,通过ServerSocket和Socket类完成客户端与服务器之间的通信。
531

被折叠的 条评论
为什么被折叠?



