Java实现服务器与客户端网络通信
2016-10-10 18:22
531 查看
只能实现客户端和服务器之间的网络通信,多客户端的暂时还不会,等待更新吧
![](https://img-blog.csdn.net/20161010182133799?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1.Server.java
package hahaha; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class Server { public static void main(String[] args) { // TODO Auto-generated method stub WindowServer win = new WindowServer(); win.setTitle("服务器"); } } class WindowServer extends JFrame implements ActionListener { JButton start, send; JTextField port; JTextField inputText; JTextArea showResult; Socket socket = null; PrintWriter out = null; BufferedReader in = null; ServerThread thread; WindowServer() { setLayout(new FlowLayout()); add(new JLabel("Port:")); port = new JTextField("8888", 25); add(port); start = new JButton("start"); add(start); showResult = new JTextArea(15, 35); JScrollPane scroll = new JScrollPane(showResult); add(scroll); add(new JLabel("Say:")); inputText = new JTextField(26); add(inputText); send = new JButton("发送"); send.setEnabled(false); add(send); start.addActionListener(this); send.addActionListener(this); showResult.append("Server starting……\n"); setBounds(400, 100, 400, 400); setVisible(true); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { if (e.getSource() == start) { try { ServerSocket s = new ServerSocket(Integer.parseInt(port.getText())); socket = s.accept(); showResult.append("Client connected……\n\n"); // PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()))); // BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); thread = new ServerThread(); thread.start(); send.setEnabled(true); } catch (IOException e1) { } } if (e.getSource() == send) { if (socket.isConnected()) { String s = inputText.getText(); if (!s.isEmpty()) { out.println("服务器:" + s); showResult.append("服务器:" + s + "\n"); inputText.setText(null); out.flush(); } } } } class ServerThread extends Thread { String s = null; public void run() { while (true) { if (socket.isConnected()) { try { s = in.readLine(); showResult.append(s + "\n"); } catch (IOException e) { showResult.append("与服务器已断开\n"); break; } } else { showResult.append("与服务器已断开\n"); } } } } }
2.Client.java
package hahaha; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class Client { public static void main(String[] args) { // TODO Auto-generated method stub WindowClient win = new WindowClient(); win.setTitle("客户端"); } } class WindowClient extends JFrame implements Runnable, ActionListener { JTextField ip, port; JButton connection, send; JTextField inputText; JTextArea showResult; Socket socket = null; PrintWriter out = null; BufferedReader in = null; Thread thread; WindowClient() { socket = new Socket(); setLayout(new FlowLayout()); add(new JLabel("Serve IP:")); ip = new JTextField("127.0.0.1", 8); add(ip); add(new JLabel("Serve Port:")); port = new JTextField("8888", 8); add(port); connection = new JButton("Connect"); add(connection); showResult = new JTextArea(15, 35); add(showResult); JScrollPane scroll = new JScrollPane(showResult); add(scroll); add(new JLabel("Say:")); inputText = new JTextField(25); add(inputText); send = new JButton("发送"); send.setEnabled(false); add(send); connection.addActionListener(this); send.addActionListener(this); thread = new Thread(this); setBounds(800, 100, 410, 400); setVisible(true); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { if (e.getSource() == connection) { try { // 请求和服务器建立连接 if (socket.isConnected()) { } else { InetAddress address = InetAddress.getByName("127.0.0.1"); InetSocketAddress socketAddress = new InetSocketAddress(address, Integer.parseInt(port.getText())); socket.connect(socketAddress); showResult.append("Connect to server……\n\n"); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream()); send.setEnabled(true); if (!(thread.isAlive())) { thread = new Thread(this); } thread.start(); } } catch (IOException e1) { System.out.println(e1); socket = new Socket(); } } if (e.getSource() == send) { if (socket.isConnected()) { String s = inputText.getText(); if (!s.isEmpty()) { out.println("客户端:" + s); showResult.append("客户端:" + s + "\n"); inputText.setText(null); out.flush(); } } } } public void run() { String s = null; while (true) { try { s = in.readLine(); showResult.append(s + "\n"); } catch (Exception e) { showResult.append("服务器已断开\n"); break; } } } }
3.界面展示
相关文章推荐
- 在java网络编程中实现服务器和客户端一对一的聊天
- Java学习笔记(一)------服务器&客户端一对一通信小程序实现(TCP)
- java udp网络编程及实例代码,实现客户端和服务端通信
- Java-网络通信、TCP、UDP、服务器客户端的通信
- Java 实现TCP网络聊天[服务器-客户端]UI界面
- Java基于多线程的网络通信实现服务器计算正方形面积
- Linux下网络socket编程——实现服务器(select)与多个客户端通信
- Java实现服务器和客户端简单通信
- Java网络编程之服务器与客户端通信
- java实现客户端与服务器通信
- Java网络编程ServerSocket的实现服务器与用户之间的通信的基本步骤
- 网络编程:使用Socket实现简单的服务器和客户端的通信
- Java基于UDP实现服务器和多客户端之间的通信
- 使用thrift实现了Java服务器和nodejs客户端之间的跨平台通信
- java网络编程----------Socket实现客户端和服务器的连接
- Java 利用套接字Socket实现简单的服务器与客户端通信
- Java基于TCP实现服务器和多客户端之间的通信