`

Java Socket编程服务器端和客户端的一个简单实例

阅读更多

服务器端:

package com.bijian.test;

import java.io.*;
import java.net.*;

public class EchoServer {

  private int port = 8000;
  private ServerSocket serverSocket;

  public EchoServer() throws IOException {

    serverSocket = new ServerSocket(port);
    System.out.println("服务器启动");
  }

  public String echo(String msg) {
    return "echo:" + msg;
  }

  public PrintWriter getWriter(Socket socket) throws IOException {

    OutputStream socketOut = socket.getOutputStream();
    return new PrintWriter(socketOut, true);
  }

  public BufferedReader getReader(Socket socket) throws IOException {

    InputStream socketIn = socket.getInputStream();
    return new BufferedReader(new InputStreamReader(socketIn));
  }

  public void service() {

    while (true) {

      Socket socket = null;
      try {
        socket = serverSocket.accept();// 等待客户端连接
        System.out.println("New aonnection accepted" + socket.getInetAddress() + ":"
            + socket.getPort());
        BufferedReader br = getReader(socket);
        PrintWriter pw = getWriter(socket);

        String msg = null;
        while ((msg = br.readLine()) != null) {
          System.out.println(msg);
          pw.println(echo(msg));
          pw.flush();
          if (msg.equals("bye")) {
            break;
          }
        }
      } catch (IOException e) {
        e.printStackTrace();
      } finally {
        try {
          if (socket != null)
            socket.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
  }

  public static void main(String[] args) throws IOException {
    new EchoServer().service();
  }
}

客户端:

package com.bijian.test;

import java.net.*;
import java.io.*;

public class EchoClient {

  private String host = "localhost";
  private int port = 8000;
  private Socket socket;

  public EchoClient() throws IOException {
    socket = new Socket(host, port);
  }

  private PrintWriter getWriter(Socket socket) throws IOException {
    OutputStream socketOut = socket.getOutputStream();
    return new PrintWriter(socketOut, true);
  }

  private BufferedReader getReader(Socket socket) throws IOException {
    InputStream socketIn = socket.getInputStream();
    return new BufferedReader(new InputStreamReader(socketIn));
  }

  public void talk() throws IOException {

    try {
      BufferedReader br = getReader(socket);
      PrintWriter pw = getWriter(socket);
      BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
      String msg = null;
      while ((msg = localReader.readLine()) != null) {
        pw.println(msg);
        pw.flush(); 
        System.out.println(br.readLine());
        if (msg.equals("bye")) {
          break;
        }
      }
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      try {
        socket.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }

  public static void main(String[] args) throws IOException {
    new EchoClient().talk();
  }
}

运行结果:

客户端:


服务端:



参考文章:http://www.cnblogs.com/mbigger/archive/2012/08/08/2628154.html

  • 大小: 4.9 KB
  • 大小: 9.4 KB
分享到:
评论

相关推荐

    基于TCP的Socket编程服务器和客户端代码

    本主题聚焦于使用Java进行基于TCP的Socket编程,通过`File_client.java`和`File_server.java`两个文件来实现服务器和客户端之间的数据交换。 首先,TCP Socket编程的基础是Java的`java.net.Socket`和`java.net....

    java socket编程 服务器和客户端

    以上就是Java Socket编程中服务器和客户端交互的基本步骤和涉及的关键知识点。实际应用中,可能还需要考虑到网络延迟、数据完整性、安全性等因素,并进行相应的优化和处理。在TestSocket项目中,我们可以找到具体的...

    java网络编程客户端和服务端

    首先,我们要知道Java的`ServerSocket`类代表服务器端的一个监听套接字,它用于等待客户端的连接请求。创建`ServerSocket`对象时,通常需要指定一个端口号,这个端口号是服务器应用程序监听连接的入口。例如: ```...

    Java Socket PC端传输文件简易服务器客户端

    Java Socket编程是网络编程中的重要组成部分,主要用于在两台计算机之间建立双向通信通道,实现数据的交换。在Java中,Socket类和ServerSocket类是进行网络通信的核心工具,它们提供了客户端与服务器之间的连接和...

    java多人聊天室(服务器端和客户端)

    1. **服务器端(Server)**:服务器端程序通常会创建一个`ServerSocket`实例来监听特定端口的连接请求。当有新的客户端连接时,服务器会为每个客户端创建一个新的线程来处理与其的通信,这样可以同时处理多个客户端...

    Java Socket编程服务器响应客户端实例代码

    Java Socket编程服务器响应客户端实例代码是指使用Java语言编写的Socket编程服务器端和客户端实例代码,实现了服务器端响应客户端的请求和处理客户端提交的信息。 一、Java Socket编程服务器响应客户端实例代码的...

    Java基于socket实现的客户端和服务端通信功能完整实例

    通过本文,读者可以了解Java中的Socket编程,掌握客户端和服务器端的实现方法,从而实现网络通信。 相关知识点 * Java中的Socket * Socket的基本概念 * 客户端和服务器端的实现 * 数据的发送和接收 * Socket的连接...

    Java Socket网络编程.pdf

    一旦连接成功,客户端和服务器端都将拥有各自的`Socket`实例,可以进行数据的读写。 数据的传输通过`Socket`的输入输出流完成。每个`Socket`对象都有一个输入流(`InputStream`)和一个输出流(`OutputStream`)。...

    Android环境下Socket编程,服务器端和客户端通讯

    在本文中,我们将深入探讨如何在Android平台上实现服务器端和客户端的Socket通讯,以及如何创建9999端口进行数据交互。 首先,我们需要理解Socket的基本概念。Socket在计算机网络中是一种进程间通信机制,它提供了...

    socket通讯 .net做为服务器端和java 做为客户端

    在服务器端,我们可以创建一个`System.Net.Sockets.Socket`对象,设置其监听的IP地址和端口号,然后调用`Listen()`方法开始监听客户端的连接请求。为了处理多个并发连接,通常会使用多线程或异步编程模型。在接收到...

    java socket编程实例(出自《java大学教程》)

    可能包含一个简单的客户端,它连接到本地服务器并发送一些数据,然后接收响应。也可能是服务器端代码,监听特定端口,接受客户端连接,并对每个连接创建新线程来处理请求。 学习这些Java Socket编程实例,有助于...

    Android Socket编程客户端服务器端源码

    本教程将深入探讨Android Socket编程的基本概念、客户端与服务器端的实现以及相关源码解析。 一、Socket基本概念 Socket,也被称为套接字,是网络通信中的一个重要接口,它为两台设备提供双向通信的通道。在Android...

    java socket 客户端代码

    下面是一个简单的Java Socket客户端示例,用于连接到一个聊天服务器: ```java import java.io.*; import java.net.*; public class ChatClient { public static void main(String[] args) { try (Socket socket...

    JAVA_Socket_TCP(客户端服务器)

    在Java编程语言中,Socket是实现TCP(传输控制协议)通信的基础组件。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,它为应用...在实际开发中,了解和熟练掌握Socket编程对于构建网络应用程序至关重要。

    Socket服务器端和客户端通信代码

    以下是一个简单的Socket服务器端的步骤: 1. **导入必要的库**:`java.net.ServerSocket` 和 `java.net.Socket` 是进行Socket编程的关键类,需要导入它们。 2. **创建ServerSocket实例**:使用`ServerSocket(int ...

    java聊天室 (内含服务器+客户端)赞! Socket SerSocket

    在本项目中,我们有一个服务器端(ServerSocket)和多个客户端(Socket),它们通过TCP/IP协议进行通信,实现即时消息的交换。 首先,让我们了解一下Java中的Socket。Socket是Java提供的用于网络通信的接口,它基于...

    JAVA Socket编程实现文件上传

    Java Socket编程是网络编程的基础,它提供了在两个应用程序之间建立通信连接的能力。在这个场景中,我们讨论的是如何使用Java的Socket来实现文件上传功能,即从客户端将文件发送到服务器,然后保存到服务器的数据库...

    三步学会Java_Socket编程

    Socket则是建立网络连接时使用的,连接成功后,服务器和客户端都会创建一个Socket实例,通过这两个实例进行数据传输。 Socket API中,有以下几个关键方法: 1. `accept()`:这个方法用于服务器端,它会阻塞直到有...

    java socket编程

    在本文中,我们将深入探讨Java Socket编程的关键概念、工作原理以及如何创建服务端和客户端,并讨论如何通过多线程支持多个客户端同时在线。 首先,Socket是网络上的两个进程间通信的端点,它允许数据在网络中双向...

    Java socket编程实例代码(Blog配套代码)

    本实例代码是为了配合博客文章,提供一个简单的Java Socket聊天室的实现,帮助读者更好地理解和应用Socket编程。 在Java Socket编程中,主要有两个核心概念:服务器端(Server)和客户端(Client)。服务器端通过...

Global site tag (gtag.js) - Google Analytics