知识大全 一个Java 的 Socket 服务器和客户端通信的例子

Posted

篇首语:须知少年凌云志,曾许人间第一流。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 一个Java 的 Socket 服务器和客户端通信的例子相关的知识,希望对你有一定的参考价值。

一个Java 的 Socket 服务器和客户端通信的例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一个 HelloWord 级别的 Java Socket 通信的例子 通讯过程

  先启动 Server 端 进入一个死循环以便一直监听某端口是否有连接请求 然后运行 Client 端 客户端发出连接请求 服务端监听到这次请求后向客户端发回接受消息 连接建立 启动一个线程去处理这次请求 然后继续死循环监听其他请求 客户端输入字符串后按回车键 向服务器发送数据 服务器读取数据后回复客户端数据 这次请求处理完毕 启动的线程消亡 如果客户端接收到 OK 之外的返回数据 会再次发送连接请求并发送数据 服务器会为这次连接再次启动一个线程来进行响应…直到当客户端接收到的返回数据为 OK 时 客户端退出

  服务端源代码

  [java] view plaincopyprint?

   package defonds socket begin;

  

   import java io BufferedReader;

   import java io DataInputStream;

   import java io DataOutputStream;

   import java io InputStreamReader;

   import ServerSocket;

   import Socket;

  

   public class Server

       public static final int PORT = ;//监听的端口号

  

       public static void main(String[] args)

           System out println( 服务器启动…\\n )

           Server server = new Server()

           server init()

      

  

       public void init()

           try

               ServerSocket serverSocket = new ServerSocket(PORT)

               while (true)

                   // 一旦有堵塞 则表示服务器与客户端获得了连接

                   Socket client = serverSocket accept()

                   // 处理这次连接

                   new HandlerThread(client)

              

           catch (Exception e)

               System out println( 服务器异常 + e getMessage())

          

      

  

       private class HandlerThread implements Runnable

           private Socket socket;

           public HandlerThread(Socket client)

               socket = client;

               new Thread(this) start()

          

  

           public void run()

               try

                   // 读取客户端数据

                   DataInputStream input = new DataInputStream(socket getInputStream())

                   String clientInputStr = input readUTF() //这里要注意和客户端输出流的写方法对应 否则会抛 EOFException

                   // 处理客户端数据

                   System out println( 客户端发过来的内容 + clientInputStr)

  

                   // 向客户端回复信息

                   DataOutputStream out = new DataOutputStream(socket getOutputStream())

                   System out print( 请输入 \\t )

                   // 发送键盘输入的一行

                   String s = new BufferedReader(new InputStreamReader(System in)) readLine()

                   out writeUTF(s)

  

                   out close()

                   input close()

               catch (Exception e)

                   System out println( 服务器 run 异常 + e getMessage())

               finally

                   if (socket != null)

                       try

                           socket close()

                       catch (Exception e)

                           socket = null;

                           System out println( 服务端 finally 异常 + e getMessage())

                      

                  

              

          

      

  

  package defonds socket begin;

  import java io BufferedReader;

  import java io DataInputStream;

  import java io DataOutputStream;

  import java io InputStreamReader;

  import ServerSocket;

  import Socket;

  public class Server

  public static final int PORT = ;//监听的端口号

  public static void main(String[] args)

  System out println( 服务器启动…\\n )

  Server server = new Server()

  server init()

  

  public void init()

  try

  ServerSocket serverSocket = new ServerSocket(PORT)

  while (true)

  // 一旦有堵塞 则表示服务器与客户端获得了连接

  Socket client = serverSocket accept()

  // 处理这次连接

  new HandlerThread(client)

  

   catch (Exception e)

  System out println( 服务器异常 + e getMessage())

  

  

  private class HandlerThread implements Runnable

  private Socket socket;

  public HandlerThread(Socket client)

  socket = client;

  new Thread(this) start()

  

  public void run()

  try

  // 读取客户端数据

  DataInputStream input = new DataInputStream(socket getInputStream())

  String clientInputStr = input readUTF() //这里要注意和客户端输出流的写方法对应 否则会抛 EOFException

  // 处理客户端数据

  System out println( 客户端发过来的内容 + clientInputStr)

  // 向客户端回复信息

  DataOutputStream out = new DataOutputStream(socket getOutputStream())

  System out print( 请输入 \\t )

  // 发送键盘输入的一行

  String s = new BufferedReader(new InputStreamReader(System in)) readLine()

  out writeUTF(s)

  out close()

  input close()

   catch (Exception e)

  System out println( 服务器 run 异常 + e getMessage())

   finally

  if (socket != null)

  try

  socket close()

   catch (Exception e)

  socket = null;

  System out println( 服务端 finally 异常 + e getMessage())

  

  

  

  

  

    客户端源代码

  [java] view plaincopyprint?

   package defonds socket begin;

  

   import java io BufferedReader;

   import java io DataInputStream;

   import java io DataOutputStream;

   import java io IOException;

   import java io InputStreamReader;

   import Socket;

  

   public class Client

       public static final String IP_ADDR = localhost ;//服务器地址

       public static final int PORT = ;//服务器端口号

  

       public static void main(String[] args)

           System out println( 客户端启动… )

           System out println( 当接收到服务器端字符为 \\ OK\\ 的时候 客户端将终止\\n )

           while (true)

               Socket socket = null;

               try

                   //创建一个流套接字并将其连接到指定主机上的指定端口号

                   socket = new Socket(IP_ADDR PORT)

  

                   //读取服务器端数据

                   DataInputStream input = new DataInputStream(socket getInputStream())

                   //向服务器端发送数据

                   DataOutputStream out = new DataOutputStream(socket getOutputStream())

                   System out print( 请输入 \\t )

                   String str = new BufferedReader(new InputStreamReader(System in)) readLine()

                   out writeUTF(str)

  

                   String ret = input readUTF()

                   System out println( 服务器端返回过来的是 + ret)

                   // 如接收到 OK 则断开连接

                   if ( OK equals(ret))

                       System out println( 客户端将关闭连接 )

                       Thread sleep( )

                       break;

                  

  

                   out close()

                   input close()

               catch (Exception e)

                   System out println( 客户端异常 + e getMessage())

               finally

                   if (socket != null)

                       try

                           socket close()

                       catch (IOException e)

                           socket = null;

                           System out println( 客户端 finally 异常 + e getMessage())

                      

                  

              

          

      

  

  package defonds socket begin;

  import java io BufferedReader;

  import java io DataInputStream;

  import java io DataOutputStream;

  import java io IOException;

  import java io InputStreamReader;

  import Socket;

  public class Client

  public static final String IP_ADDR = localhost ;//服务器地址

  public static final int PORT = ;//服务器端口号

  public static void main(String[] args)

  System out println( 客户端启动… )

  System out println( 当接收到服务器端字符为 \\ OK\\ 的时候 客户端将终止\\n )

  while (true)

  Socket socket = null;

  try

  //创建一个流套接字并将其连接到指定主机上的指定端口号

  socket = new Socket(IP_ADDR PORT)

  //读取服务器端数据

  DataInputStream input = new DataInputStream(socket getInputStream())

  //向服务器端发送数据

  DataOutputStream out = new DataOutputStream(socket getOutputStream())

  System out print( 请输入 \\t )

  String str = new BufferedReader(new InputStreamReader(System in)) readLine()

  out writeUTF(str)

  String ret = input readUTF()

  System out println( 服务器端返回过来的是 + ret)

  // 如接收到 OK 则断开连接

  if ( OK equals(ret))

  System out println( 客户端将关闭连接 )

  Thread sleep( )

  break;

  

  out close()

  input close()

   catch (Exception e)

  System out println( 客户端异常 + e getMessage())

   finally

  if (socket != null)

  try

  socket close()

   catch (IOException e)

  socket = null;

  System out println( 客户端 finally 异常 + e getMessage())

  

  

  

  

  

  

cha138/Article/program/Java/hx/201311/25568

相关参考

知识大全 Java Socket多线程服务端、客户端

JavaSocket多线程服务端、客户端  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  //主方

知识大全 分享socket 客户端-服务器入门代码

  这是从另一个论坛的代码修改的原来有很多错误我已经修改供大家欣赏!  这中间还用到了设计模式中的代理模式还有一些jframe入门的东西  客户端  publicclassJavaClientexte

知识大全 Flex Socket与Java通讯客户端写法

FlexSocket与Java通讯客户端写法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &l

知识大全 Java Socket编程(三)服务器Sockets

JavaSocket编程(三)服务器Sockets  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Java Socket多线程如何支持服务器模型

JavaSocket多线程如何支持服务器模型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Ja

知识大全 Java Socket应答与HTTP服务器的瓜葛

JavaSocket应答与HTTP服务器的瓜葛  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  J

知识大全 用java 实现一个简单的web 服务器

  importjavaioIOException;importServerSocket;importSocket;  /** *Socket+Thread+FileIO *&nb

知识大全 多线程对多个客户端的监听

  这是一个比较简单的例子来说明socket编程服务器端使用了多线程来监听客户端  服务器端的代码  packageSocketTest;  importjavaio*;  import*;  imp

知识大全 Java多线程Socket操作猜数游戏样例

Java多线程Socket操作猜数游戏样例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  服务器

知识大全 Java网络协议 TCP和客户端/服务器范型

Java网络协议TCP和客户端/服务器范型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在网络