Java——socketser与cli
Posted 仿生阿白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java——socketser与cli相关的知识,希望对你有一定的参考价值。
package 网络编程; import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class 界面ser extends JFrame implements ActionListener//搞一手动作监听 { JPanel mb=null; JTextArea ta=null; JButton an=null; JTextField tf=null; JScrollPane gd=null; PrintWriter prin=null;//定义在这的 全局调用 public static void main(String[] args) { 界面ser ser=new 界面ser(); } public 界面ser() { ta=new JTextArea(); gd=new JScrollPane(ta); this.add(gd); tf=new JTextField(20); an=new JButton("发送"); an.addActionListener(this); //这句是添加按键自己 this做监听,我是这么理解的,this关键字我一直搞不太明白,有懂得可以分享下哈 mb=new JPanel(); mb.add(tf); mb.add(an); //add tf add an 要放到tf an创建之后 this.add(mb,"South"); this.setTitle("服务器"); this.setSize(600,500); this.setLocation(500,600); this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); try{//socket通信有关部分全都要放到try catch中,因为它可能会出现异常 ServerSocket ser=new ServerSocket(9999); Socket serl=ser.accept(); InputStreamReader mes=new InputStreamReader(serl.getInputStream()); BufferedReader mess=new BufferedReader(mes); prin=new PrintWriter(serl.getOutputStream(),true);//true是开启自动刷新 while(true)//接收部分,直接扔到死循环里,接受就显示 { String xinxi=mess.readLine(); ta.append("B:"+xinxi+" ");//TextField上添加信息不覆盖 } }catch(Exception e){} } public void actionPerformed(ActionEvent e) { if(e.getSource()==an)//如果按键被按下 { String xinxi=tf.getText();//从TextField中读取 ta.append("A:"+xinxi+" ");//添加上信息,不覆盖,这个是在TextArea上显示 prin.println(xinxi); //这个是发送到客户端 tf.setText(""); //发送之后,清空TextField } } }
package 网络编程; import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class 界面cli extends JFrame implements ActionListener { JPanel mb=null; JTextArea ta=null; JButton an=null; JTextField tf=null; JScrollPane gd=null; PrintWriter prin=null; public static void main(String[] args) { 界面cli cli=new 界面cli(); } public 界面cli() { ta=new JTextArea();//文本区域是不用添加到面板上的,直接this.add即可 gd=new JScrollPane(ta); this.add(gd); tf=new JTextField(20); an=new JButton("发送"); an.addActionListener(this);//添加监听 mb=new JPanel(); mb.add(tf); mb.add(an); this.add(mb,"South"); this.setTitle("客户端"); this.setSize(600,500); this.setLocation(500,600); this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); try{ Socket serl=new Socket("127.0.0.1",9999);//本机IP 端口要与服务端相同 InputStreamReader mes=new InputStreamReader(serl.getInputStream()); BufferedReader mess=new BufferedReader(mes); prin=new PrintWriter(serl.getOutputStream(),true); while(true) { String xinxi=mess.readLine(); ta.append("A:"+xinxi+" ");//ta TextArea } }catch(Exception e){} } public void actionPerformed(ActionEvent e) { if(e.getSource()==an) { String xinxi=tf.getText(); ta.append("B:"+xinxi+" ");//添加上信息,不覆盖,这个是在TextArea上显示 prin.println(xinxi); //这个是发送到server端 tf.setText(""); //发送之后,清空TextField } } }
以上是关于Java——socketser与cli的主要内容,如果未能解决你的问题,请参考以下文章