Java简单的客户端与服务器的建立与通信
来源:互联网 发布:因扎吉数据 编辑:程序博客网 时间:2024/05/15 06:08
简述:
建立简单的server与client,在利用socket上通信
知识点:
1. java socket 通信
2. java GUI的几个控件
3. 多线程并发
代码:
SimpleChatServer.java
- package test.chatclient;
- import java.io.*;
- import java.net.*;
- import java.util.*;
- public class SimpleChatServer {
- ArrayList<PrintWriter> clientOutputStreams;
- public static void main(String[] args){
- new SimpleChatServer().go();
- }
- public class ClientHandler implements Runnable{
- BufferedReader reader;
- Socket sock;
- public ClientHandler(Socket clientSocket){
- try{
- sock = clientSocket;
- InputStreamReader isReader = new InputStreamReader(sock.getInputStream());
- reader = new BufferedReader(isReader);
- }catch(Exception ex){
- ex.printStackTrace();
- }
- }
- @Override
- public void run() {
- String message;
- try{
- while((message = reader.readLine()) != null){
- System.out.println("read " + message);
- tellEveryone(message);
- }
- }catch(Exception ex){
- ex.printStackTrace();
- }
- }
- }
- public void tellEveryone(String message){
- Iterator<PrintWriter> it = clientOutputStreams.iterator();
- while(it.hasNext()){
- try{
- PrintWriter writer = (PrintWriter)it.next();
- writer.println(message);
- writer.flush();
- }catch(Exception ex){
- ex.printStackTrace();
- }
- }
- }
- public void go(){
- clientOutputStreams = new ArrayList<PrintWriter>();
- try{
- ServerSocket serverSock = new ServerSocket(5000);
- while(true){
- Socket clientSocket = serverSock.accept();
- PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());
- clientOutputStreams.add(writer);
- Thread t = new Thread(new ClientHandler(clientSocket));
- t.start();
- System.out.println("got a connection");
- }
- }catch(Exception ex){
- ex.printStackTrace();
- }
- }
- }
SimpleChatClient.java
- package test.chatclient;
- import java.io.*;
- import java.net.*;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.JOptionPane;
- public class SimpleChatClient {
- JTextArea incoming;
- JTextField outgoing;
- BufferedReader reader;
- PrintWriter writer;
- Socket sock;
- static String clientName;
- public static void main(String[] args) {
- SimpleChatClient client = new SimpleChatClient();
- clientName = JOptionPane.showInputDialog("Please input the client name :");
- client.go();
- }
- public void go() {
- // build GUI
- JFrame frame = new JFrame(clientName + "'s Chat Client");
- JPanel mainPanel = new JPanel();
- incoming = new JTextArea(15,20);
- incoming.setLineWrap(true);
- incoming.setWrapStyleWord(true);
- incoming.setEditable(false);
- JScrollPane qScroller = new JScrollPane(incoming);
- qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
- qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
- outgoing = new JTextField(20);
- JButton sendButton = new JButton("Send");
- sendButton.addActionListener(new SendButtonListener());
- mainPanel.add(qScroller);
- mainPanel.add(outgoing);
- mainPanel.add(sendButton);
- setUpNetworking();
- Thread readerThread = new Thread(new IncomingReader());
- readerThread.start();
- frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
- frame.setSize(400,500);
- frame.setVisible(true);
- } // close go
- private void setUpNetworking() {
- try {
- sock = new Socket("127.0.0.1", 5000);
- InputStreamReader streamReader = new InputStreamReader(sock.getInputStream());
- reader = new BufferedReader(streamReader);
- writer = new PrintWriter(sock.getOutputStream());
- System.out.println("networking established");
- } catch(IOException ex) {
- ex.printStackTrace();
- }
- } // close setUpNetworking
- public class SendButtonListener implements ActionListener {
- public void actionPerformed(ActionEvent ev) {
- try {
- writer.println(clientName+" says:\n"+outgoing.getText());
- writer.flush();
- } catch(Exception ex) {
- ex.printStackTrace();
- }
- outgoing.setText("");
- outgoing.requestFocus();
- }
- } // close SendButtonListener inner class
- public class IncomingReader implements Runnable {
- public void run() {
- String message = null;
- try {
- while ((message = reader.readLine()) != null) {
- System.out.println("read " + message);
- incoming.append(message + "\n");
- } // close while
- } catch(Exception ex) {ex.printStackTrace();}
- } // close run
- } // close inner class
- }
输出:
原文链接:http://blog.csdn.net/anialy/article/details/7908077
0 0
- Java简单的客户端与服务器的建立与通信
- Java简单的客户端与服务器的建立与通信
- Java简单的客户端与服务器的建立与通信
- 【C#】Socket客户端与服务器的简单通信
- 【C#】Socket客户端与服务器的简单通信
- Java 利用套接字Socket实现简单的服务器与客户端通信
- Linux服务器与JAVA客户端(android)的socket通信
- java版客户端与服务器的socket通信以及上传下载
- cocos2d-x客户端与Java服务器的通信(一)
- tcp通讯的方式并使用socket建立客户端与服务器的通信的过程
- 如何客户端与服务器通信的安全?
- Android客户端与服务器之间的通信
- HttpClient实现客户端与服务器的通信
- Android客户端与服务器的通信
- 一个服务器与两个客户端的通信
- 简单的服务端与客户端通信代码
- 用Java实现一个简单的服务器与客户端程序
- 用Java实现一个简单的服务器与客户端程序
- 平均背景法的原理
- centos 6.5 快速安装PHP环境
- ajax
- 如何通过PowerShell部署和管理Farm Solution?
- HDOJ 题目5100 Chessboard(数学乱搞)
- Java简单的客户端与服务器的建立与通信
- js中的暂停和异步问题
- Eclipse常用快捷键
- 数组以及数组作为参数所占内存问题
- 从angularJS的数组中拿出数据——实际项目应用
- 每日一得--开发工程师linux常用命令
- Java 并发编程实践---可重入锁
- Ubuntu 12.04右键在当前位置打开终端
- MapView上长按屏幕添加大头针代码实现