`

server/client端通信

    博客分类:
  • java
阅读更多
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author max
 */
public class Server1 {


    public static void main(String[] args) throws IOException
    {
        int port = 8821;
        
        ServerSocket serverSocket = new ServerSocket(port);
        ExecutorService exe = Executors.newFixedThreadPool(   //只有一个ExecutorService,执行
                             Runtime.getRuntime().availableProcessors()*10);
         while(true)
        {
             Socket socket = serverSocket.accept();
             exe.execute(getTask(socket)); //开启多个线程
        }
 
    }

    public static Runnable getTask(final Socket s)
    {
        return new Runnable(){

            private BufferedReader br = null;
            private PrintWriter pw = null;
            private Socket socket = null;

            public void run() {
                try {
                    this.socket = s; //socket可以传递
                    System.out.println("接收到客户端的数据");
                    br = getReader(socket);
                    pw = getWriter(socket);
                    //从客户端读
                    String msg = null;
                   
                    while (( msg = br.readLine()) != null) {
                        System.out.println(msg);
                        if(msg.equals("bye"))  //注意,没有这句不能退出while
                            break;
                    }
                    //向客户端写
                    pw.println("数据正确");
                } catch (IOException ex) {
                    Logger.getLogger(Server1.class.getName()).log(Level.SEVERE, null, ex);
                } finally {
                    try {
                        if(socket!=null)
                        socket.close();
                    } catch (IOException ex) {
                        Logger.getLogger(Server1.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }

            //从客户端读数据
            private BufferedReader getReader(Socket socket) throws IOException {
                InputStream input = socket.getInputStream();
                return new BufferedReader(new InputStreamReader(input));
            }

            //向客户端写数据
            private PrintWriter getWriter(Socket socket) throws IOException {
                OutputStream output = socket.getOutputStream();
                return new PrintWriter(new OutputStreamWriter(output),true);//注意true是提醒刷新
            }

        };
    }
}

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author max
 */
public class Client1 {

    public static void main(String[] args)
    {
        int numTask = 10;
        ExecutorService exec = Executors.newCachedThreadPool();
        for(int i = 0;i < numTask;i++)
        {
            exec.execute(createTask(i));
        }
    }

    public static Runnable createTask(int taskID)
    {
        return new Runnable(){
            private int port = 8821;
            private Socket socket = null;

            public void run(){

                try {
                    System.out.println("开始发送数据");
                    socket = new Socket("localhost", port);
                    OutputStream socketOut = socket.getOutputStream();
                    socketOut.write("你好,你是谁\r\n".getBytes());
                    socketOut.write("bye\r\n".getBytes());

                    InputStream socketInput = socket.getInputStream();
                    BufferedReader br = new BufferedReader(new InputStreamReader(socketInput));
                    String msg = null;
                    while((msg = br.readLine())!= null)
                    {
                        System.out.println(msg);
                    }
                } catch (UnknownHostException ex) {
                    Logger.getLogger(Client1.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(Client1.class.getName()).log(Level.SEVERE, null, ex);
                }


            }
        };
    }
}

 

分享到:
评论

相关推荐

    server/client 多用户通信

    在这个“server/client 多用户通信”项目中,我们将深入探讨如何使用Socket来构建异步式、消息驱动的系统,以支持多个客户端同时与服务器进行交互。 首先,让我们从基础概念开始。`ServerSocket`是Java提供的一个类...

    《A Simple IOCP Server/Client Class》

    在《A Simple IOCP Server/Client Class》项目中,服务器端主要涉及以下步骤: 1. **创建IOCP**:使用`CreateIoCompletionPort()`函数创建一个IOCP,为后续I/O操作提供接口。 2. **设置监听套接字**:通过`socket()...

    server/client

    在IT领域,服务器/客户端(Server/Client)架构是一种常见的通信模式,特别是在网络编程中,如TCP协议的应用。本文将详细解析如何在Linux环境下实现基于TCP协议的客户端和服务器之间的通信功能。 首先,TCP...

    VNC的server端和client端

    总的来说,VNC的server端和client端通过简单的网络通信协议实现了高效的远程桌面控制,为用户提供了极大的便利。RealVNC作为VNC技术的重要提供商,其产品在安全性、稳定性和易用性方面都有出色的表现,是许多企业和...

    TCP——Server/client的网络通信

    而"TCPServer"文件则可能包含服务器端的代码,如设置监听套接字,接受客户端连接,处理接收到的数据,以及关闭连接的逻辑。 通过这两个程序,我们可以深入学习TCP协议的工作机制,包括连接的建立、数据的传输和连接...

    远程控制编码server/client代码

    在远程控制场景中,client端发送指令到server端,server端接收并执行这些指令,然后将执行结果返回给client。这个过程涉及到网络编程的核心概念,如套接字编程、数据传输格式(如JSON或XML)以及错误处理。 在...

    TCP Server/Client Demo C#程序

    在这个"TCP Server/Client Demo C#程序"中,我们将探讨如何使用C#进行TCP/IP通信的基础知识。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,它确保了数据的顺序传输和错误检测。...

    E4A安卓App Server/Client调试助手

    开发者可以通过Server端向其他设备广播信息,或者设置Client端接收Server的数据,实现双向通信。这对于测试App在局域网环境下的性能和功能至关重要。 3. **局域网调试**: 局域网调试是指在同一个网络环境下,通过...

    java -> UDP Server/Client

    总的来说,这个Java UDP Server/Client示例提供了一个基础的网络通信模型,展示了如何在Java中利用UDP进行数据交换。通过深入研究这些文件,你可以学习到网络编程的基础知识,包括套接字编程、数据打包与解包,以及...

    C# Socket范例,Server/Client

    首先,对于服务器端(Server)的实现,我们需要创建一个Socket实例,并指定其IP地址和端口号。服务器通常会绑定到一个特定的IP和端口上,等待客户端的连接请求。在C#中,这可以通过调用Socket的Bind和Listen方法实现...

    MyServer_TCPserver/client_

    这个是简单的TCPServer和TCPClent。简单实了server与client之前的通信。

    linux下UDP,server/client模型

    在构建基于UDP的Server/Client模型时,我们通常会创建两个程序:一个是服务器端(UDP Server),另一个是客户端(UDP Client)。下面我们将详细介绍这两个程序的实现以及如何进行网络通信。 1. **UDP Server**: -...

    一个server端与多个client端通信python代码

    在Python编程中,实现服务器(Server)与多个客户端(Client)之间的通信是常见的网络编程任务。这个场景通常涉及网络协议,如TCP/IP或UDP,以及多线程或多进程技术来处理来自不同客户端的并发请求。在这个项目中,...

    OpenCV+TCP+server+client.zip

    在本项目中,"OpenCV+TCP+server+client.zip" 是一个利用Python的OpenCV库和socket模块实现的基于TCP通信的局域网视频监控系统。这个系统分为两个主要部分:服务器(server)和客户端(client)。让我们深入探讨一下...

    wince下tcp server/client

    在这个环境中实现TCP Server和Client,可以帮助设备之间进行高效、可靠的数据通信。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,它确保了数据在发送端和接收端之间的完整性和顺序。在...

    tcp例子c# server&client

    在IT行业中,TCP(传输控制协议)是一种广泛用于网络通信的协议,因为它提供了一种可靠的、面向...通过实践TcpServerDemo2和ClientDemo2这两个示例,你可以深入理解TCP通信的工作原理,并具备实际编写相关代码的能力。

    winsocket编程实现简单 server端和client端

    在这个例子中,我们关注的是一个简单的Server端和Client端的实现,这类似于流行的即时通讯软件QQ的数据通信功能。 首先,让我们深入了解Winsocket的基本概念。Winsock是Windows Socket的简称,它是一个API,用于在...

    server_client通信程序

    在这个“server_client通信程序”中,我们很可能会看到使用Socket编程实现的实例。Socket是网络编程中的一个接口,允许应用程序通过它来发送和接收数据。 1. **Socket编程基础**: Socket是进程间通信(IPC)的一...

    Client/Server通信

    在IT领域,Client/Server通信是网络编程中的基础模型,广泛应用于各种分布式系统。Qt库,作为一个跨平台的C++应用程序开发框架,提供了强大的网络通信支持,尤其是通过其TCP Socket模块。本文将深入探讨Qt下如何实现...

    SQL server Native Client 10.0

    这个组件在64位操作系统中尤其重要,因为它提供了对64位数据源的支持,确保了与SQL Server 2008 R2等64位数据库系统的高效通信。 1. **ODBC接口**: ODBC是SQL Server Native Client 10.0中的关键部分,它是一个...

Global site tag (gtag.js) - Google Analytics