java简单ai聊天_一个hello/hi的简单的网络聊天程序——JAVA

本文介绍了使用Java的Socket和ServerSocket类进行网络通信的基础知识,展示了如何创建一个简单的客户端-服务器端聊天应用。通过监听端口6666,服务器接收并响应客户端的请求,实现了双向的消息传递功能。
摘要由CSDN通过智能技术生成

1、方案介绍

应用程序通过使用用于描述IP地址和端口的“套接字”-Socket向网络发出请求或应答网络请求。Socket和ServerSocket类库位于Java.net包中。前者是建立网络连接时使用的,后者则是用于服务端的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例可完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生级别差别。他们的工作是通过SocketImpl类及其之类完成的。

程序包括服务器和客户端。详细原理图如下所示:

7a3cbefed5db098ce9b859c2b2dbeabb.bmp

2、程序运行

程序运行之前,我们需要知道服务器端主机所在网络的地址,使用cmd查看如下:

ceb3f7706d8f3498d502e9f8d5b9088a.png

该IPv4地址是172.16.80.88,子网掩码为255.255.255.0,默认网关是172.16.80.254。我们将得到的IP改写入客户端的相应地方即可。打开程序后,服务器处于监听状态。

服务器端代码

packageServer_Client;import javax.swing.*;import java.net.*;import java.lang.*;import java.awt.event.*;import java.io.*;public classServer {

JTextArea jta=null;

JTextField jtf=null;

JButton jb=null;

JScrollPane jsp=null;

JPanel jpl=null;

PrintWriter pw=null;public static voidmain(String[] args) {

MyServer msv=newMyServer();

}public voidMyServer(){

jta=newJTextArea();

jtf=new JTextField(20);

jsp=newJScrollPane(jta);

jb=new JButton("send");

jb.addActionListener(this);

jpl=newJPanel();this.add(jsp,"Center");

jpl.add(jtf);

jpl.add(jb);this.add(jsp,"South");this.setTitle("Server");this.setSize(400,300);this.setVisible(true);try{

ServerSocket ss=new ServerSocket(6666);//服务器监听

Socket s=ss.accept();

InputStreamReader isr=newInputStreamReader(s.getInputStream());

BufferedReader br=newBufferedReader(isr);

pw=new PrintWriter(s.getOutputStream(),true);while(true)

{

String info=br.readLine();//读取信息

jta.append("客户端对服务器说:"+info+"\r\n");

}

}catch(Exception e){

e.printStackTrace();

}

}

@Overridepublic voidactionPerformed(ActionEvent e){//如果按下发送按钮if(e.getSource()==jb){

String info=jtf.getText();

jta.append("服务器对客户端说:"+info+"\r\n");

pw.println(info);

jtf.setText("");

}

}

}

客户端代码

packageServer_Client;import javax.swing.*;import java.net.*;import java.awt.event.*;import java.io.*;public classClient {

JTextArea jta=null;

JTextField jtf=null;

JButton jb=null;

JScrollPane jsp=null;

JPanel jpl=null;

PrintWriter pw=null;public static voidmain(String[] args) {

MyClient met=newMyClient();

}publicMyClient()

{

jta=newJTextArea();

jtf=new JTextField(20);

jsp=newJScrollPane(jta);

jb=new JButton("send");

jb.addActionListener(this);

jpl=newJPanel();this.add(jsp,"Center");

jpl.add(jtf);

jpl.add(jb);this.add(jsp,"South");this.setTitle("Client");this.setSize(400,300);this.setVisible(true);try{

ServerSocket s=new ServerSocket("172.16.80.88",6666);

InputStreamReader isr=newInputStreamReader(s.getInputStream());

BufferedReader br=newBufferedReader(isr);

pw=new PrintWriter(s.getOutputStream(),true);while(true)

{

String info=br.readLine();//读取从服务器发来的信息

jta.append("客户端对服务器说:"+info+"\r\n");

}

}catch(Exception e){

e.printStackTrace();

}

}

@Overridepublic voidactionPerformed(ActionEvent e){if(e.getSource()==jb){

String info=jtf.getText();

jta.append("客户端对服务器说:"+info+"\r\n");

pw.println(info);

}

}

}

运行结果图如下:

5f6933a4db7f7604452e700a42058a11.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值