知识大全 使用Socket进行通信[1]

Posted 地址

篇首语:莫道桑榆晚,为霞尚满天。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用Socket进行通信[1]相关的知识,希望对你有一定的参考价值。

疯狂Java讲义:使用Socket进行通信[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   使用Socket进行通信

  客户端通常可使用Socket的构造器来连接到指定服务器 Socket通常可使用如下两个构造器

  Socket(InetAddress/String remoteAddress int port) 创建连接到指定远程主机 远程端口的Socket 该构造器没有指定本地地址 本地端口 默认使用本地主机的默认IP地址 默认使用系统动态指定的IP地址

  Socket(InetAddress/String remoteAddress int port InetAddress localAddr int localPort) 创建连接到指定远程主机 远程端口的Socket 并指定本地IP地址和本地端口号 适用于本地主机有多个IP地址的情形

  上面两个构造器中指定远程主机时既可使用InetAddress来指定 也可直接使用String对象来指定 但程序通常使用String对象(如 )来指定远程IP 当本地主机只有一个IP地址时 使用第一个方法更为简单 如下代码所示

  //创建连接到本机 端口的Socket

  Socket s = new Socket( )

  //下面就可以使用Socket进行通信了

  …

  当程序执行上面代码中粗体字代码时 该代码将会连接到指定服务器 让服务器端的ServerSocket的accept()方法向下执行 于是服务器端和客户端就产生一对互相连接的Socket

  上面程序连接到 远程主机 的IP地址使用的是 这个IP地址是一个特殊的地址 它总是代表本级的IP地址 因为笔者示例程序的服务器端 客户端都是在本机运行 所以Socket连接到远程主机的IP地址使用

  当客户端 服务器端产生了对应的Socket之后 此时就到了如图 所示的通信示意图 程序无须再区分服务器 客户端 而是通过各自的Socket进行通信 Socket提供如下两个方法来获取输入流和输出流

  InputStream getInputStream() 返回该Socket对象对应的输入流 让程序通过该输入流从Socket中取出数据

  OutputStream getOutputStream() 返回该Socket对象对应的输出流 让程序通过该输出流向Socket中输出数据

  看到这两个方法返回的InputStream和OutputStream 读者应该可以明白Java在设计IO体系上的苦心了 不管底层的IO流是怎样的节点流 文件流也好 网络Socket产生的流也好 程序都可以将其包装成处理流 从而提供更多方便的处理 下面以一个最简单的网络通信程序为例来介绍基于TCP协议的网络通信

  下面的服务器程序非常简单 它仅仅建立ServerSocket监听 并使用Socket获取输出流输出

  程序清单 codes/ / /Server java

  public class Server

  

  public static void main(String[] args)

  throws IOException

  

  //创建一个ServerSocket 用于监听客户端Socket的连接请求

  ServerSocket ss = new ServerSocket( )

  //采用循环不断接受来自客户端的请求

  while (true)

  

  //每当接受到客户端Socket的请求 服务器端也对应产生一个Socket

  Socket s = ss accept()

  //将Socket对应的输出流包装成PrintStream

  PrintStream ps = new PrintStream(s getOutputStream())

  //进行普通IO操作

  ps println( 您好 您收到了服务器的新年祝福! )

  //关闭输出流 关闭Socket

  ps close()

  s close()

  

  

  

  下面的客户端程序也非常简单 它仅仅使用Socket建立与指定IP 指定端口的连接 并使用Socket获取输入流读取数据

cha138/Article/program/Java/hx/201311/27264

相关参考

知识大全 使用NIO实现非阻塞Socket通信(1)

疯狂Java讲义:使用NIO实现非阻塞Socket通信(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 使用NIO实现非阻塞Socket通信(2)[1]

疯狂Java讲义:使用NIO实现非阻塞Socket通信(2)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一

知识大全 一个最简单的Socket通信例子

一个最简单的Socket通信例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  所谓socket

知识大全 利用Delphi编写Socket通信程序

利用Delphi编写Socket通信程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!笔者在工作中

知识大全 Java的socket通信的demo

Java的socket通信的demo  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java代码

知识大全 运用异步输入输出流编写Socket进程通信

运用异步输入输出流编写Socket进程通信  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  杨健(

知识大全 C#和C++结构体Socket通信

C#和C++结构体Socket通信  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近在用C#做

知识大全 Java NIO(异步IO)Socket通信例子

JavaNIO(异步IO)Socket通信例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  /

知识大全 使用NIO实现非阻塞Socket通信(2)[2]

疯狂Java讲义:使用NIO实现非阻塞Socket通信(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一

知识大全 Java Socket通信读取相关信息代码

JavaSocket通信读取相关信息代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java