知识大全 Java做一个最简单的Socket通话程序
Posted 知
篇首语:农村四月闲人少,勤学苦攻把名扬。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java做一个最简单的Socket通话程序相关的知识,希望对你有一定的参考价值。
Java做一个最简单的Socket通话程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java中的网络编程是一个很重要的部分 也是其编程优越性的地方之一 在Java中有一个专门的类库来管理网络编程的有关方法 下面先介绍在Java中怎样用socket进行客户与服务器通信 最后再介绍一个一个最简单的通话程序 一 怎样用socket进行客户与服务器通信 在Java中用socket进行客户/服务器之间的通信编程 Socket是两个实体之间进行通信的有效端点 通过socket可以获得源IP地址和源端口 终点IP地址和终点端口 用户可以将多个socket连入同一个端口 以便对于单个端口可以有多个连接 通过socket客户/服务器编程可以创建一个能被许多人使用的分布式程序 并且所有客户均可以用统一的前端进行工作 并与服务器进行通信 要想与服务器通信必须具备三个条件 服务器程序 客户程序和连接它们的socket程序 这三个部分缺一不可 但是 客户与服务器之间的通信有很多的方式 其中另一个方法是把客户作为索取者 把服务器作为给予者 下面我们看一看Java的服务器编程 在Java中 服务器有 个主要的功能 在类库中通过构造一个ServerSocket类的实例使服务器能够检测到指定端口的信息 用ServerSocke中的accept()方法可以使服务器检测到指定端口的活动 另外 服务器还负责检测要求与它连接的客户 ·Socket类的实例代表客户与服务器连接成功 通过编程可以使多个用户通过同一个端口与服务器相连 其中都是Socket 类的实例 可以分别用Socket类的getInputStream()和getOutStream()方法来发送和捕捉数据 其使用方法如下 try ServerSocket myServerSocket=new ServerSocket( ); Socket my Socket=myServerSocket accept(); catch(Exception e) 在上面的代码中 首先构造一个ServerSocket类的实例 并传递给它一个整数作为服务器指定可以使用的给定端口 如下 ServerSocket myServerSocket=new ServerSocket( ) 在Java程序中如果每次构造ServerSocket时都能保持捕捉异常事件 则就随时指定了准备使用的端口 下面的代码使用accept()方法来检测端口的活动 Socket my Socket=myServerSocket accept(); Accept()方法直到接收到用户的连接请求 才继续执行中断的执行程序 一旦客户的连接成功 my Socket就代表该连接 并且可以发送和接收数据 最后 我们看一看客户是怎样请求连接的 其连接方法如下 try Socket mySocket=new Socket( ); catch(Exception e ) 通过上面的代码可能看出 也是通过Socket类来实现的 下面我们通过一个网络编程的实例来说明如何进行网络通信 二 一个最简单的通话程序 通话器服务器: import *; import java io *; import java lang *; public class myserver public static void main(String args[]) ServerSocket server; Socket socket; String s; InputStream Is; OutputStream Os; DataInputStream DIS; PrintStream PS; try //在端口 注册服务 server=new ServerSocket( ); socket=server accept(); //监听窗口 等待连接 System out println( server ok ); System out println( ************************************************ ); System out println( ); //获得对应Socket的输入/输出流 Is=socket getInputStream(); Os=socket getOutputStream(); //建立数据流 DIS=new DataInputStream(Is); PS=new PrintStream(Os); DataInputStream in=new DataInputStream(System in); while(true) System out println( ); System out println( please wait client s message ); System out println( ); s=DIS readLine(); //读入从client传来的字符串 System out println( client said: +s); //打印字符串 if(s trim() equals( BYE ))break; //如果是 BYE 就退出 System out print( you say: ); s=in readLine(); //读取用户输入的字符串 PS println(s); //将读取得字符串传给client if(s trim() equals( BYE ))break; //如果是 BYE 就退出 //关闭连接 DIS close(); //关闭数据输入流 PS close(); //关闭数据输出流 Is close(); //关闭输入流 Os close(); //关闭输出流 socket close(); //关闭sockey catch(Exception e) System out println( Error: +e); 通话器客户端 import *; import java io *; import java lang *; public class myclient public static void main(String args[]) if (args length<1) //判断命令加参数没有 System.out.println("you fet the name of the server!"); System.out.println("see also: myclient yxf"); System.exit(1); //如果没加参数就退出 Socket socket; String s=""; String len; InputStream Is; OutputStream Os; DataInputStream DIS; PrintStream PS; try //向主机名为args[0]的服务器申请连接 //注意端口号要与服务器保持一致:4321 socket=new Socket(args[0],4321); System.out.println("client ok"); System.out.println("************************************************"); System.out.println(""); //获得对应socket的输入/输出流 Is=socket.getInputStream(); Os=socket.getOutputStream(); //建立数据流 DIS=new DataInputStream(Is); PS=new PrintStream(Os); DataInputStream in=new DataInputStream(System.in); while(true) System.out.print("you say:"); s=in.readLine(); //读取用户输入的字符串 PS.println(s); //将读取得字符串传给server if(s.trim().equals("BYE"))break; //如果是"BYE",就退出 else System.out.println(""); System.out.println("please wait server\'s message..."); System.out.println(""); s=DIS.readLine(); //从服务器获得字符串 System.out.println("server said:"+s); //打印字符串 if(s.trim().equals("BYE"))break; //如果是"BYE",就退出 //关闭连接 DIS.close(); //关闭数据输入流 PS.close(); //关闭数据输出流 Is.close(); //关闭输入流 Os.close(); //关闭输出流 socket.close(); //关闭socket catch(Exception e) System.out.println("Error:"+e); cha138/Article/program/Java/hx/201311/25869相关参考
网上参考别人的例子改自己的程序终于搞明白了原来在socket的服务器端设置线程并不是像之前想的那样建立一个连接后就重新开一个端口去监听这样的想法遇到了很多问题首先当我把客户端弄成for循环递增的链
知识大全 Java Socket 编程——多线程网络聊天程序
JavaSocket编程——多线程网络聊天程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 用
importjavaioIOException;importServerSocket;importSocket; /** *Socket+Thread+FileIO *&nb
基于Socket的Java网络编程集粹 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!其实简单的分析
最基本的Socket编程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 示例程序是同步套接字程序
实例教程:JavaSocket编程的一个秘密类[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
实例教程:JavaSocket编程的一个秘密类[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 一个Java 的 Socket 服务器和客户端通信的例子
一个Java的Socket服务器和客户端通信的例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JavaSocket编程中的一个秘密类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一介绍 J
用Lucene做一个简单的Java搜索工具 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 初学L