客户端/服务器端通信:传输对象
2017-02-21 23:20
351 查看
本例用java演示在客户端和服务器端传输一个对象,然后打印该对象包含的一些信息。这个程序的基本流程如下图:
![](https://img-blog.csdn.net/20170221223152581?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3psMzg5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
先创建一个对象,这个对象包含两个字符串类型的成员,name和message。这个类在被传输之前需要继承可序列化的接口。
客户端建立起与服务端的连接,需要使用套接字。套接字指定了互相传输的两台机器的ip地址,端口号与传输协议。然后,客户端创建输出流,输出对象。
服务器端通过套接字监听客户端发送的端口,从该端口接受输入流,再从输入流中解析出该对象,并打印。
运行该实例的方法。IP地址127.0.0.1是回环地址,意味着客户端试图连接的是本地服务器,即可以用同一台机器进行本地测试。一个简单的方法就是用eclipse建立一个工程,将上述代码写在一个包内。Windows环境下,打开两个cmd程序,分别运行Client类和Server类,就能实时查看文本信息传送结果了。
客户端输入信息:
![](https://img-blog.csdn.net/20170221231759079?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3psMzg5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
服务器端显示:
先创建一个对象,这个对象包含两个字符串类型的成员,name和message。这个类在被传输之前需要继承可序列化的接口。
import java.io.*; import java.util.*; public class TextMessage implements Serializable { public String name; public String message; TextMessage(String n) { name=n; message=" "; } public String getName() { return name; } public String getTextMessage() { return message; } public void setTextMessage(String inTextMessage) { message=inTextMessage; } }
客户端建立起与服务端的连接,需要使用套接字。套接字指定了互相传输的两台机器的ip地址,端口号与传输协议。然后,客户端创建输出流,输出对象。
import java.io.*; import java.net.*; /* *TextMessage的客户端类 */ public class Client { // public static void main(String[] args) { // TODO Auto-generated method stub try { while(true) { transferObject(); } } catch (Exception e) { System.out.println(e); } } public static void transferObject() throws Exception { //构建TextMessage对象 TextMessage myTextMessage=buildTextMessage(); //创建套接字连接 Socket socketToServer=new Socket("127.0.0.1",11111); //创建Object Output Stream ObjectOutputStream myOutputStream= new ObjectOutputStream(socketToServer.getOutputStream()); myOutputStream.writeObject(myTextMessage); //关闭流 myOutputStream.close(); } public static TextMessage buildTextMessage() throws Exception { String message=" "; String name=" "; System.out.println("please enter name:"); name=getString(); System.out.println("message:"); message=getString(); //创建TextMessage对象 TextMessage myTextMessage=new TextMessage(name); myTextMessage.setTextMessage(message); return myTextMessage; } public static String getString() throws Exception { //等待键盘输入(调用‘stdin’) BufferedReader stdin= new BufferedReader(new InputStreamReader(System.in),1); String s1=stdin.readLine(); return s1; } }
服务器端通过套接字监听客户端发送的端口,从该端口接受输入流,再从输入流中解析出该对象,并打印。
import java.io.*; import java.net.*; /* *TextMessage的Server类 */ public class Server { public static void main(String[] args) { // TODO Auto-generated method stub //创建来自客户端的对象的引用 TextMessage myTextMessage=null; try { //启动服务并监听端口11111 ServerSocket myServerSocket=new ServerSocket(11111); System.out.println("Ready\n"); while(true) { myTextMessage=acceptObject(myServerSocket); System.out.println(myTextMessage.getName() + ":" + myTextMessage.getTextMessage()+"\n"); } } catch(Exception e) { System.out.println(e); } } public static TextMessage acceptObject(ServerSocket myServerSocket) throws Exception { //创建来自客户端的对象的引用 TextMessage myTextMessage=null; //等待直到有客户端试图连接 Socket incoming=myServerSocket.accept(); //创建ObjectInputStream ObjectInputStream myInputStream= new ObjectInputStream(incoming.getInputStream()); //通过套接字读取客户端传输过来的对象 myTextMessage=(TextMessage)myInputStream.readObject(); //关闭流 myInputStream.close(); return myTextMessage; } }
运行该实例的方法。IP地址127.0.0.1是回环地址,意味着客户端试图连接的是本地服务器,即可以用同一台机器进行本地测试。一个简单的方法就是用eclipse建立一个工程,将上述代码写在一个包内。Windows环境下,打开两个cmd程序,分别运行Client类和Server类,就能实时查看文本信息传送结果了。
客户端输入信息:
服务器端显示:
相关文章推荐
- 探讨:使用httpClient在客户端与服务器端传输对象参数的详解
- 使用Socket模拟简单的C/S通信,客户端之间数据传输采用对象流
- 探讨:使用httpClient在客户端与服务器端传输对象参数的详解
- webservice delphi客户端 java服务器端 传输简单和复杂对象 小demo
- Java Socket通信 客户端与服务器端的连接 和信息传输
- Java Socket服务器端和客户端之间传输对象
- 通信之多客户端传输对象实现
- 模拟jQuery ajax服务器端与客户端通信
- 获取服务器端控件的客户端对象
- 客户端与服务器端的通信(一)
- 客户端与服务器端的通信
- AjaxPro框架使用整理(二) 客户端与服务器端自定义对象交互
- js 客户端与服务器端的通信
- Socket实现客户端和服务器端的消息通信
- socket编程---服务器端与客户端简单通信
- 底层通信,socket 服务器端 和客户端
- Android 2.0上使用蓝牙通信代码片断(服务端、客户端、数据传输)
- Linux网络编程-客户端与服务器端通信(Echo)
- 关于用Socket实现,客户端和服务器端的通信
- 客户端和服务器端通信