java实现客户端与服务器通信
2016-07-24 10:41
639 查看
swing与java.net实现,客户端发送信息给服务器,服务器返回信息给客户端。
客户端程序 WeChatClient.java
服务器端程序 SimpleServer.java
待续实现:
与其他IP 主机通信,打包发送给别人使用,因不了解如果没有安装jre包的其他平台如何运行java虚拟机。
客户端程序 WeChatClient.java
import java.io.*; import java.net.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; //将信息发送给服务器 127.0.0.1 3333 接收并显示 public class WeChatClient implements ActionListener{ private JTextArea incoming;//接收区域 private JTextField outgoing;//发送区域 private PrintWriter writer;// private BufferedReader reader;// private Socket socket;// public static void main(String[] args){ WeChatClient client=new WeChatClient(); client.go(); } public void go(){ JFrame frame=new JFrame(); JPanel panel=new JPanel(); incoming=new JTextArea(15,50);//15行,50列 incoming.setLineWrap(true);//设置自动换行 incoming.setWrapStyleWord(true);//设置单词后换行 incoming.setEditable(false);//设置为不可编辑 JScrollPane scroller=new JScrollPane(incoming); scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); outgoing=new JTextField(20);//20列 JButton sendButton=new JButton("发送"); sendButton.addActionListener(this); panel.add(scroller); panel.add(outgoing); panel.add(sendButton); setUpNetWorking(); Thread readThread=new Thread(new ReceiveRunnable()); readThread.start(); frame.getContentPane().add(BorderLayout.CENTER,panel); frame.setSize(400,500); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } //设置socket,与服务器连接 public void setUpNetWork(){ try{ socket=new Socket("127.0.0.1",3333); reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); writer=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); }catch(IOException e ){ e.printStackTrace(); } } //监听按钮是否按下,发送 public void actionPerformed(ActionEvent e){ // if(!outgoing.getText()){ String line=outgoing.getText(); writer.println(line); //} } //开启新线程接收信息 class ReceiveRunnable implements Runnable{ //如何接收 public void run(){ String line; try{ while((line=reader.readLine())!=null){ // line=reader.readLine(); incoming.append(line+"\n"); } }catch(IOException e){e.printStackTrace();} } } // class SendButtonListener implements ActionListener{ // public void actionPerformed(ActionEvent e){ // System.out.println("click"); //} }
服务器端程序 SimpleServer.java
import java.io.*; import java.net.*; //服务器,接收客户端发送的信息并显示,再将相同信息发送给客户端 public class SimpleServer{ public static void main(String[] args){ SimpleServer server=new SimpleServer(); server.start(); } public void start(){ try{ ServerSocket soc=new ServerSocket(3333);//端口3333 Socket socket=soc.accept(); BufferedReader read=new BufferedReader(new InputStreamReader(socket.getInputStream()));//读取socket输入流 PrintWriter write=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);//输出流 while(true){ String line; while((line=read.readLine())!=null){ System.out.println(line); write.println(line);//发送 } } }catch(IOException e) { e.printStackTrace(); } } }
待续实现:
与其他IP 主机通信,打包发送给别人使用,因不了解如果没有安装jre包的其他平台如何运行java虚拟机。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 小心服务器内存居高不下的元凶--WebAPI服务
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- 运维入门
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序