全双工实现服务器与客户端的通信
来源:互联网 发布:网站美工要学什么 编辑:程序博客网 时间:2024/06/05 07:33
/* * 服务器端 */package TestServer;import javax.swing.*;import java.awt.*;import java.io.*;import java.net.*;import java.nio.Buffer;public class MyServer3 extends JFrame{public static void main(String[] args) {// TODO Auto-generated method stubMyServer3 ms = new MyServer3();}public MyServer3(){new ServerSetForm();}}
package TestServer;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;import java.net.*;public class ServerSetForm extends JFrame implements ActionListener{JTextArea jta = null;JTextField jtf = null;JButton jb = null;JScrollPane jsp = null;JPanel jp = null;//把信息发给客户端对象PrintWriter pw = null;public ServerSetForm(){jta = new JTextArea();jtf = new JTextField(20);jb = new JButton("发送");jb.addActionListener(this);jsp = new JScrollPane(jta);jp = new JPanel();this.add(jsp, BorderLayout.CENTER);jp.add(jtf);jp.add(jb);this.add(jp,BorderLayout.SOUTH);this.setSize(400,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setTitle("服务器端");this.setLocationRelativeTo(null);this.setResizable(false);this.setVisible(true);try {ServerSocket ss = new ServerSocket(9998);Socket s = ss.accept();InputStreamReader isr = new InputStreamReader(s.getInputStream());BufferedReader br = new BufferedReader(isr);pw = new PrintWriter(s.getOutputStream(),true);//读取从客户端得到的信息while(true){String str = br.readLine();jta.append("服务器接收:"+str+"\r\n");}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub//用户按下发送的按钮if(e.getSource() == jb){//把服务器在jtf写的内容发送到客户端String info = jtf.getText();jta.append("服务器发出:" + info + "\r\n");pw.println(info);//清空jtf的内容jtf.setText("");}}}
/* * 客户端 */package TestClient;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.io.*;import java.net.*;/* * KeyListener按键不能发生反应 * ?????? */public class MyClient3 extends JFrame implements ActionListener,KeyListener{JTextArea jta = null;JTextField jtf = null;JButton jb = null;JScrollPane jsp = null;JPanel jp = null;PrintWriter pw = null;public static void main(String[] args) {// TODO Auto-generated method stubMyClient3 ms = new MyClient3();}public MyClient3(){jta = new JTextArea();jtf = new JTextField(20);jb = new JButton("发送");jb.addActionListener(this);addKeyListener(this);jsp = new JScrollPane(jta);jp = new JPanel();this.add(jsp, BorderLayout.CENTER);jp.add(jtf);jp.add(jb);this.add(jp,BorderLayout.SOUTH);this.setSize(400,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setTitle("客户端");this.setLocationRelativeTo(null);this.setResizable(false);this.setVisible(true);try {Socket s = new Socket("127.0.0.1",9998);InputStreamReader isr = new InputStreamReader(s.getInputStream());BufferedReader br = new BufferedReader(isr);pw = new PrintWriter(s.getOutputStream(),true);while(true){String info = br.readLine();/* * append向JTextArea中添加信息的时候不会产生覆盖的现象 * setText往JTextArea中添加信息的时候会产生覆盖现象 */jta.setText("客户端接收到:" + info + "\r\n");}} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubif(arg0.getSource() == jb){//getText表示从JTextField中得到要输入的信息String str = jtf.getText();jta.append("客户端发出:" + str + "\r\n");pw.println(str);jtf.setText("");}}@Overridepublic void keyPressed(KeyEvent e) {// TODO Auto-generated method stubSystem.out.println("********");if(e.getKeyCode() == KeyEvent.VK_ENTER){System.out.println("sadfsdfasdfafsdasfadsdfasdfa");//getText表示从JTextField中得到要输入的信息String str = jtf.getText();jta.append("客户端发出:" + str + "\r\n");pw.println(str);jtf.setText("");}}@Overridepublic void keyReleased(KeyEvent e) {// TODO Auto-generated method stub}@Overridepublic void keyTyped(KeyEvent e) {// TODO Auto-generated method stub}}
客户端与服务器端不要在同一个工程中
实现界面
0 0
- 全双工实现服务器与客户端的通信
- 基于TCP协议实现客户服务器的全双工通信
- WebSocket: HTML5一种新的协议, 实现浏览器与服务器全 双工通信(full-duplex)
- UDP全双工通信的实现
- Java Websocket实例【服务端与客户端实现全双工通讯】
- HttpClient实现客户端与服务器的通信
- 网络的全双工与半双工
- 全双工与半双工的区别
- 全双工与半双工的区别
- 全双工与半双工的区别
- 服务契约(双工契约的服务器与客户端实现案例)
- Java实现全双工串口通信
- 利用java实现串口全双工通信
- 用Winsock实现语音全双工通信
- java socket实现全双工通信
- WCF实现全双工通信笔记
- C# Tcp 全双工通信 实现
- 使用TCP/IP协议实现客户端和服务端全双工通信(转载)
- 【Android】【完善】【凯子哥带你夯实应用层】滚来滚去,滚来滚去...Scroller相关类使用大揭秘!!!
- ffmpeg 捕获屏幕和采集声卡、摄像头、麦克风声音
- Spark OOM:java heap space,OOM:GC overhead limit exceeded解决方法
- VR入门
- lintcode segment-tree-modify 线段树的修改
- 全双工实现服务器与客户端的通信
- android studio文档教程
- 页面跳转(无结果返回值)(内部监听类事件)
- 面试题46:求1+2+...+n
- 学习之前
- POJ 1328 Radar Installation(预处理贪心)
- c++学习笔记(十):C++类和对象
- Eclipse插件的两种安装方式
- 中断分层