- 浏览: 144885 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (138)
- java基础 (26)
- 日常工作经验总结 (22)
- SVN学习与使用 (1)
- JBOSS学习与实践 (1)
- webService学习与实践 (4)
- redis学习与实践 (12)
- spring学习与实践 (0)
- hibernate学习与实践 (4)
- Struts2学习与实践 (0)
- mybatis学习与实践 (0)
- SpringMVC学习与实践 (0)
- jfreechart学习与使用 (0)
- javaScript学习与实践 (1)
- linux学习与实践 (4)
- Python学习与实践 (7)
- Oracle学习与实践 (21)
- Mysql学习与实践 (4)
- HTML5+CSS3学习与实践 (0)
- DIV+CSS学习与实践 (0)
- tomcat学习与实践 (1)
- mongodb学习与实践 (1)
- Git学习与实践 (2)
- hadhoop学习与实践 (0)
- shiro学习与实践 (0)
- CMS学习与实践 (0)
- Jmeter学习与实践 (0)
- java测试学习与实践 (2)
- bootstrap学习与实践 (0)
- jquery学习与实践 (0)
- Spring+hibernate+Struts2框架开发CRM项目 (0)
- JVM学习与实践 (0)
- 推荐学习网站 (1)
- 日常工作必备小技能 (4)
- Apache实践 (1)
- dubbo学习与实践 (2)
- Centos7 (6)
- 面试题目集合(收集各大网站) (4)
- 大数据学习 (1)
- 财富本 (2)
- 股票投资学习 (0)
- ZooKeeper (0)
- python切割集合里面相同的元素到一个集合里面 (1)
- 机器学习与深度学习 (1)
最新评论
-
魏叔武:
...
基于UDP协议的Socket编程
由于第一个socket编程实现的是传递一个字符串,无法实现一个对象传递,下面来改造上次编写的代码实现面向对象编程.
第一步:新建一个java project,增加一个User类 如下图:
第二步:编写User类的代码,代码如下所示:
第三步,修改服务器端后的代码如下:
第四步,修改客户端的代码后如下:
第五步:运行服务器端的代码,控制台输出的内容如下:
可以看见,运行服务器端后,服务器处于监听转态
第六步:运行客户端的代码,结果如下图:
此时客户端收到来自服务器的回应,并且显示success
第七步,再次查看服务器端的控制台输出的内容如下:
服务器端,收到来自客户端的一个对象,并且实现面向对象编程了。
第一步:新建一个java project,增加一个User类 如下图:
第二步:编写User类的代码,代码如下所示:
package com.socket.entity; import java.io.Serializable; /** * 用户实体类 * * @author lfc 备注:如果这个实体类需要通过socket类来实现传递,必须实现 Serializable接口 */ public class User implements Serializable { private static final long serialVersionUID = -8828187863940569914L; private long id; private String name; private String password; private int age; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public User() { } public User(long id, String name, String password, int age) { this.id = id; this.name = name; this.password = password; this.age = age; } }
第三步,修改服务器端后的代码如下:
package com.socket.server; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import com.socket.entity.User; /** * 服务器端 * * @author lfc 对于这个客户端以及服务端,运行的时候,必须先服务端开始运行起来,开始监听客户端的程序请求 * 缺点:如果是登录程序中只能监听一个用户登录程序就会进入死亡转态了 */ public class SocketServer { public static void main(String[] args) { System.out.println("服务器端准备好监听客户端的请求了。。。"); try { // 1:创建一个服务端的ServerScoket,绑定端口开始监听 ServerSocket serverScoket = new ServerSocket(8800); // 2:使用accept()方法阻塞等待连接,获得新的连接 Socket socket = serverScoket.accept(); // 3:获得输入流 InputStream is = socket.getInputStream(); // 包装下变成字符流,实现可以对对象进行反序列话操作 ObjectInputStream ois=new ObjectInputStream(is); //创建输出流,用来给客户端提示的响应信息 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); // 4:读取对象,获得对象 User user=(User)ois.readObject(); System.out.println("编号:"+user.getId()); System.out.println("年龄:"+user.getAge()); System.out.println("姓名:"+user.getName()); System.out.println("密码:"+user.getPassword()); //给客户端的回应信息 String response="客户端已经收到你们的信息了,Success"; pw.write(response); pw.flush(); // 5:关闭资源,注意,关闭的时候,要从底部开始往上依次关闭,顺序不能错! os.close(); pw.close(); ois.close(); is.close(); socket.close(); serverScoket.close(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println("本次服务端监听结束!。。。"); } }
第四步,修改客户端的代码后如下:
package com.socket.client; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; import com.socket.entity.User; /** * 客户端 * * @author lfc * */ public class loginClient { public static void main(String[] args) throws UnknownHostException { try { // 1,创建serverScoket客户端,绑定服务器端的ip以及端口 Socket scoket = new Socket("localhost", 8800); // 2,得到scoket读写流 OutputStream os = scoket.getOutputStream(); // 获得对象输出流,可以对对象进行序列化操作 ObjectOutputStream oos=new ObjectOutputStream(os); //输入流 InputStream is=scoket.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); // 3,利用一定的协议对scoket中的对读写操作 PrintWriter pw = new PrintWriter(os); User user=new User(); user.setId(1); user.setAge(19); user.setName("tom"); user.setPassword("AAbb123"); oos.writeObject(user); //需要先关闭,一定要记得先关闭 scoket.shutdownOutput(); //接收并显示收到服务器端返回的信息! String answer = null; while (!((answer = br.readLine()) == null)) { System.out.println("我是服务器端接收并且给返回的信息:\n" + answer); } // 4,关闭流 is.close(); oos.close(); br.close(); os.close(); scoket.close(); } catch (IOException e) { e.printStackTrace(); } System.out.println("客户端请求完毕!"); } }
第五步:运行服务器端的代码,控制台输出的内容如下:
可以看见,运行服务器端后,服务器处于监听转态
第六步:运行客户端的代码,结果如下图:
此时客户端收到来自服务器的回应,并且显示success
第七步,再次查看服务器端的控制台输出的内容如下:
服务器端,收到来自客户端的一个对象,并且实现面向对象编程了。
发表评论
-
jdk1.8切换1.7失效问题
2019-12-24 00:02 420项目需要jdk1.7,高了启动不了。会报错。 然而,我安装j ... -
map集合遍历
2017-09-05 16:10 522public class Test{ pu ... -
JVM调优总结(十)-调优方法
2017-07-30 21:45 0http://pengjiaheng.iteye.com/bl ... -
框架整合目标
2017-07-21 21:35 01, spring+hibernate+struts2+my ... -
java利用jxl.jar生成excel文档
2017-06-28 15:05 371java代码: package com.test.read ... -
利用jxl读取excel文件里面的内容
2017-06-28 14:23 468excel里面的内容: ... -
数组与集合互相转化
2017-04-21 20:20 369package com.ray.util; impo ... -
数组转化为集合
2017-04-16 21:07 849package com.ray.test; im ... -
快速排序
2017-03-31 14:32 375public class QuickSort { publ ... -
归并排序
2017-03-31 14:20 425public class mergeSort { ... -
希尔排序
2017-03-31 13:44 344public class shellSort { ... -
插入排序
2017-03-31 11:55 299插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它 ... -
选择排序
2017-03-31 10:02 451选择排序是一种简单直观的排序算法,数据规模越小越好。唯一的好处 ... -
HTTP协议详解(真的很经典)
2017-03-27 14:14 382[b][b]HTTP是一个属于应用层的面向对象的协议,由于其简 ... -
多线程学习的几篇文章
2017-02-06 17:55 383Java多线程(一)、多线程的基本概念和使用 http:// ... -
java实现可变参数的方法
2017-02-06 17:16 365/** * * * @author Administr ... -
java实现日期的时间的加减
2017-02-06 17:11 1063/** * 时间的加减 * @author Adminis ... -
冒泡排序算法java
2016-12-07 15:22 432今天突然被人问到冒泡排序怎么解决,一时之间自己竟 ... -
FTP上传文件功能
2016-12-06 09:31 404ftp上传功能是很多的应用软件都必备的一个基础功能,特别是CM ... -
java基础之map集合遍历
2016-11-04 16:27 454由于map集合在平时用的时候都是直接get(key)取出单个值 ...
相关推荐
**实验一: SOCKET编程实验** 在计算机网络领域,Socket编程是一种基本的通信方式,它允许两个应用程序通过网络进行数据交换。本实验旨在帮助学生深入理解SOCKET编程的概念、原理及其实现过程,以便于掌握网络通信...
在TCP Socket编程中,首先需要创建Socket对象,然后建立连接(三次握手),接着进行数据传输,最后断开连接(四次挥手)。 **UDP(User Datagram Protocol)** 是一种无连接的、不可靠的传输协议,适合于对实时性...
在Java中,Socket编程主要是基于TCP/IP协议的网络编程。 网络编程的两个主要问题 在网络编程中,有两个主要的问题需要解决:一是如何准确地定位网络上的一台或多台主机,二是找到主机后如何可靠高效地进行数据传输...
"基于TCP/IP的socket编程"是一个深入探讨如何使用socket接口进行网络通信的主题。Socket编程允许应用程序通过网络发送和接收数据,它是互联网上不同计算机之间交互的核心机制。 在给定的描述中,我们看到一个创新的...
Socket编程是计算机网络通信的核心技术之一,特别是在Windows环境下,如VC++6.0这样的开发工具中,它提供了强大的网络通信功能。本教程汇集了多个关于VC++6.0中Socket编程的学习资源,包括文档和演示文稿,旨在帮助...
面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它的核心思想是将现实世界的问题转化为计算机可以理解的模型,即对象。在Java中,对象是类(class)的实例。类定义了对象的属性(fields)和行为...
在Linux操作系统中,Socket编程通常采用C语言,因为传统的GNU C库提供了丰富的Socket API函数,但这些函数是面向过程设计的,没有面向对象的封装,使用起来比较复杂。利用C++进行Socket编程,可以通过自定义类来封装...
Socket编程是网络编程中的核心部分,它允许两个网络应用程序通过TCP/IP协议进行通信。在这个C#的实例中,我们探讨了如何使用Socket类创建一个简单的聊天通信程序,包括客户端和服务端的实现。以下是对这个主题的详细...
在Socket编程中,首先需要创建一个Socket对象,然后指定其使用的协议类型(如TCP)。接下来,服务器端会绑定一个特定的IP地址和端口号,监听客户端的连接请求。当客户端发起连接请求时,服务器端接受连接,从而创建...
在这个主题中,我们将深入探讨Socket编程的基础知识,包括IP地址操作、DNS解析以及面向连接的TCP Socket编程。 首先,我们来看IP地址操作类。IPAddress类是处理IP地址的核心类,它提供了Parse()方法,将点分十进制...
Socket编程是计算机网络通信中的重要概念,它是操作系统提供的一个接口,允许应用程序进行网络通信。本资源包中的"Socket编程"涵盖了SOCKET编程的基础知识,是初学者入门的绝佳材料。以下将详细介绍Socket编程的一些...
#### 二、Socket编程实现电子邮件发送的步骤 1. **服务器端设置**: - 创建服务器Socket,绑定到本地主机的某个端口上。 - 服务器进入监听状态,等待客户端的连接请求。 - 接收客户端的连接,并为每个连接创建一...
Java Socket编程是Java网络编程的重要组成部分,主要用于实现客户端与服务器之间的通信。在本文中,我们将深入探讨Java Socket编程的基础知识,以及如何结合HTML进行交互。 首先,Java Socket是TCP/IP协议族的一...
本主题聚焦于使用Java进行基于TCP的Socket编程,通过`File_client.java`和`File_server.java`两个文件来实现服务器和客户端之间的数据交换。 首先,TCP Socket编程的基础是Java的`java.net.Socket`和`java.net....
Socket编程是计算机网络编程中的重要组成部分,主要用于实现进程间的通信,尤其在网络环境中,它提供了不同计算机间进程数据传输的桥梁。本资料集包含了Socket编程的一些经典实例源码,旨在帮助开发者深入理解和应用...
Socket编程是计算机网络通信中的重要概念,主要用于实现进程间的网络通信。在标题“Socket编程”中,我们聚焦的是服务器端的Server Socket和客户端的Client Socket。Socket是网络编程的一个抽象接口,它允许两个运行...
二、TCP Socket编程 1. 创建Socket:在客户端,首先创建一个Socket对象,指定服务器的IP地址和端口号,通过connect()方法建立到服务器的连接。在服务器端,先调用bind()绑定一个端口,然后调用listen()监听该端口,...
Java的Socket编程是Java网络编程的核心部分,它提供了在TCP/IP协议栈上进行通信的机制。Socket接口是对TCP/IP协议的抽象,使得开发者能够轻松地创建客户端和服务器应用程序,实现网络上的数据交换。在这个主题中,...
Socket编程是计算机网络通信的核心技术之一,主要用于实现不同设备之间的数据传输。在这个“最基本的Socket编程例子”中,我们将深入理解Socket的基本概念、工作原理以及如何在实际编程中应用。 Socket,通常被称为...
Socket编程是计算机网络通信中的重要概念,特别是在点对点(P2P)网络中,它提供了基础的通信机制。在本文中,我们将深入探讨Socket编程的核心概念,包括TCP协议的应用,以及如何使用C#、Java和C语言进行Socket编程...