Java Socket模拟实时聊天系统
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java Socket模拟实时聊天系统,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2632字,纯文字阅读大概需要4分钟。
内容图文
![Java Socket模拟实时聊天系统](/upload/InfoBanner/zyjiaocheng/645/1b4760d3fb624d75888c0f46c5a446a7.jpg)
客户端和服务端都分别需要两个线程,一个用来进行消息发送,一个用来进行消息接受。
- 客户端:
package com.jay.test;
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
public class Client {
private Socket socket;
//初始化,连接目的服务器的端口
public Client(){
try {
socket=new Socket("localhost",13);
} catch (IOException e) {
e.printStackTrace();
}
//启动接受信息的线程
GetMsgFromServer getMsgFromServer=new GetMsgFromServer(socket);
new Thread(getMsgFromServer).start();
}
//发送信息的方法
public void start(){
Scanner scanner=new Scanner(System.in);
try {
PrintWriter printWriter=new PrintWriter(new OutputStreamWriter(socket.getOutputStream(),"utf-8"),true);
//持续发送信息
while (true){
String msg=scanner.next();
printWriter.println(msg);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[]args){
Client client=new Client();
client.start();
}
}
//接受信息的线程
class GetMsgFromServer implements Runnable{
private Socket socket;
public GetMsgFromServer(Socket socket){
this.socket=socket;
}
@Override
public void run() {
try {
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream(),"utf-8"));
String s;
while((s=bufferedReader.readLine())!=null)
System.out.println(s);
} catch (IOException e) {
e.printStackTrace();
}
}
}
- 服务端:
package com.jay.test;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server {
private ServerSocket serverSocket;
//初始化服务器信息,绑定端口
public Server(){
try {
serverSocket=new ServerSocket(13);
} catch (IOException e) {
e.printStackTrace();
}
}
public void start(){
while(true){
try {
Socket socket=serverSocket.accept();
//接受信息的线程
new Thread(new ServerThread(socket)).start();
String s;
Scanner scanner=new Scanner(System.in);
PrintWriter printWriter=new PrintWriter(new OutputStreamWriter(socket.getOutputStream(),"utf-8"),true);
while(true){
s=scanner.next();
printWriter.println(s);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args){
Server server=new Server();
server.start();
}
}
class ServerThread implements Runnable{
private Socket socket;
public ServerThread(Socket socket){
this.socket=socket;
}
@Override
public void run() {
try {
//获取对应的缓冲输入流
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream(),"utf-8"));
String s;
//持续接受信息
while((s=bufferedReader.readLine())!=null)
System.out.println(s);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
效果
-
服务端:
-
客户端:
内容总结
以上是互联网集市为您收集整理的Java Socket模拟实时聊天系统全部内容,希望文章能够帮你解决Java Socket模拟实时聊天系统所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。