Java学习笔记-----Socket全双工通信

本文介绍了一个基于Java Swing的全双工通信简易聊天室应用,包括服务器端和客户端的实现。通过创建JScrollPane实现消息区的滚动效果,并使用ServerSocket和Socket进行通信。文章详细展示了如何设置界面元素及监听器,以及如何处理发送和接收消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

:::::::::::::::

全双工通信。
/*
服务器端


如何让它滚动???
做一个JScorllPane  ???




*/


import javax.swing.*;
import java.io.*;
public class MyServer3 extends JFrame  implements ActionListener


{
JTextArea jta=null;
JTextField jtf=null;
JButton jb=null;
JScrollPane jsp=null;
JPanel   jp1=null;
// 这里为什么把PrintWriter 定义为全局变量??
// 把信息发给客户端的对象
PrintWriter pw=null;



public static void main(String[] args)
{
MyServer3 msv=new MyServer3();

}

public MyServer3()
{
jta=new JTextArea();
jsp=new JScrollPane(jta); // 这句话的作用是什么?是把jta放到滚动的面板里面吗?

jtf=new JTextField(10);
jb  =new JButton(发送);
// 对发送按钮做一个监听
jb.addActionListener(this);





jp1=new JPanel();
jp1.add(jtf);
jp1.add(jb);

this.add(jsp,"Center");
this.add(jp1,"South");
this.setTitle("QQ简易聊天");
this.setSize(400,300);

// 服务器监听
ServerSocket ss=new ServerSocket(9988);
//
ss.accept();
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);


pw=new PrintWriter(s.getInputStream());
// 读取从客户端发来的信息
while(true)
{
// 读取从客户端发来的信息
String info=br.readLine();
// 把读取的信息,在jta中显示出来
jta.setText(info);


}


// 如果用户按下发送信息的按钮

public  void actionPerformed(ActionListener arg0)
{
if(arg0.getSource()==jb)
{
// 把服务器在jtf里面写的内容发送给客户端
String info=jtf.getText();
pw.println(info);
jtf.setText("");// 清空内容


jta.setText(info);

}
}




}




}





::::::::::::::::::

/*
全双工
MyClient3:




*/


全双工通信。
/*
服务器端


如何让它滚动???
做一个JScorllPane  ???




*/


import javax.swing.*;
import java.io.*;
public class MyClient3 extends JFrame implements ActionListener
{
JTextArea jta=null;
JTextField jtf=null;
JButton jb=null;
JScrollPane jsp=null;
JPanel   jp1=null;


public static void main(String[] args)
{
MyServer3 msv=new MyServer3();

}

public MyServer3()
{
jta=new JTextArea();
jsp=new JScrollPane(jta); // 这句话的作用是什么?是把jta放到滚动的面板里面吗?

jtf=new JTextField(10);
jb  =new JButton(发送);
jb.addActionListener(this);
jp1=new JPanel();
jp1.add(jtf);
jp1.add(jb);

this.add(jsp,"Center");
this.add(jp1,"South");
this.setTitle("QQ简易聊天 客户端");
this.setSize(400,300);


Socket s=new Socket("127.0.0.1",9988);
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);

while(true)
{
// 不停的读取从服务器端发来的信息
String info=br.readLine();
jta.setText(info);


}

}




}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值