JAVA SOCKET 技术

java socket 技术分为服务端socket:ServerSocket 和客户端socket:Socket

ServerSocket与Socket 的建立通信方式:

服务端:

1、ServerSocket 监听端口、调用accept()创建一个Socket,并等待客户端的连接

2、获取socket的InputStream ,并从中读取客户端发送过来的数据

客户端:

1、创建一个指定IP,端口的socket,获取socket的OutputStream输出流

2、向输出流写数据,然后flush() 发送数据

由于socket是双向通信的,所有ServerSocket 可以读取客户端的数据,也可以获取OutputStream 后写数据给客户端;客户端也可以获取InputStream 读取服务端发送过来的数据。

需要注意的地方:1、accept() 是阻塞的,InputStream 是阻塞的。2、写数据后需要flush();

现在引入一个更实际的一个问题:服务端、客户端如何根据接受到的数据进行相应的处理?

思路是:服务端、客户端接受到数据后进行判断,为特定的字符是调用相应的方法,这样可以处理很多逻辑业务。

另外通过传数据给服务端或客户端特定的字符告诉可以结束读取数据的等待而结束socket。

还有一个实际问题,如何处理多个客户端与一个服务端的关系?

在这里一个服务端是指一个ip和端口,在服务端为了处理能同时处理多个客户端的通信实际上创建了多个socket 来对应处理。

为了能异步处理客户端的请求,在服务端创建了socket后放入线程中运行,这样就实现了异步处理了,处理方法在线程的run方法中被调用。

socket 设置超时,超时用于中断读取数据阻塞。

client.setSoTimeout(10*1000);

socket编码问题:

客户端的输入流编码与服务端的输出流编码一致

客户端的输出流编码与服务端的输入流编码一致

附一个具体的网址:http://haohaoxuexi.iteye.com/blog/1979837#comments

时间: 2024-10-28 05:13:56

JAVA SOCKET 技术的相关文章

JAVA通信系列一:Java Socket技术总结

本文是学习java Socket整理的资料,供参考. 1       Socket通信原理 1.1     ISO七层模型 1.2     TCP/IP五层模型 应用层相当于OSI中的会话层,表示层,应用层. 区别参考:http://blog.chinaunix.net/uid-22166872-id-3716751.html 1.3     TCP报文 (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记. (2)确认序号:Ack序号,占32

交通银行 Java Socket 服务启动 管理 WINDOWS 版

按照交通银行提供的无界面启动方法试验了很多次,都没有成功,所以自己动手用C# 知识写了一个. 小工具可以判断 交通银行 JAVA SOCKET 服务是否启动,并可以启动/关闭服务 主要代码如下: 判断服务是否启动 引用 :using System.Management; SelectQuery selectQuery = new SelectQuery(“select * from Win32_Process where Name = ‘java.exe’”); object cmdLine =

深入分析Java Web技术(1)

BS网络模型的基本过程: 当我们在浏览器中输入"www.google.com"的时候,首先会请求DNS服务器对域名进行解析成都应的IP地址,然后根据这个IP地址在互联网上找到谷歌的服务器,向这个服务器发送一个"get"请求,有这个服务器决定返回数据资源给请求的用户(在服务器端可能还会存在其他复杂的业务逻辑,服务器端有很多机器的话,需要考虑负载均衡,由哪一台服务器对资源进行回复,请求的文件是存储在静态文件中还是存储在分布式缓存中或者是数据库中,当数据返回服务器时,会发

Java Socket之单线程通信

1. 服务器端处理流程 接触一种技术,首先都要熟悉它的生命周期,这样才能从大局上看每个流程的细节.才有居高临下,势如劈竹的架势.加深我们对这种技术的理解.现在来看看socket服务器的生命周期. socket程序,一般情况下,都是服务器与客户端成双成对出现. 服务器端socket的生命周期为:监听服务器端口,接受客户端连接,获取客户端输入.输出流,处理业务逻辑.发送响应信息,关闭客户端连接,关闭服务区监听.详情如下所示: <<<-------------  <_< 向左看 2

项目日志之基于Java socket的网络通讯

Java API网络类包中的Socket类是网络上运行的两个程序间双向通信的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递.我们打算通过Java中基于Socket的网络编程实现一个简单的网络通信程序.这就是我们团队项目(开发一款简单的通讯软件,其基本功能是实现一对一的网络信息通讯,并努力向一对多和多对多靠近)的主要内容. 一.Java socket通信开发原理(查阅资料): 服务器使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端

Java远程技术介绍学习

Java远程技术介绍学习 RMI [既Remote Method Invoke 远程方法调用] 实现方式为,类extend了java.rmi.Remote接口,即成为存在于服务器端的远程对象,提供客户端访问. PS: extends了Remote接口的类或者其他接口中的方法若是声明抛出了RemoteException异常,则表明该方法可被客户端远程访问调用. 同时,远程对象必须实现java.rmi.server.UniCastRemoteObject类,这样才能保证客户端访问获得远程对象时,该远

java Socket实现简单在线聊天(一)

出处:http://blog.csdn.net/tuzongxun 最近的项目有一个在线网页交流的需求,由于很久以前做过的demo已经忘记的差不多了,因此便重新学习一下. 我计划的大致实现步骤分这样几大步: 1.使用awt组件和socket实现简单的单客户端向服务端持续发送消息: 2.结合线程,实现多客户端连接服务端发送消息: 3.实现服务端转发客户端消息至所有客户端,同时在客户端显示: 4.把awt组件生成的窗口界面改成前端jsp或者html展示的界面,java socket实现的客户端改为前

Java解压缩技术(一)ZIP压缩-解压缩

Java解压缩技术的实现 GZIP ZIP BZIP2系列实现 没啥好说的,都是些文件操作,直接贴代码 package com.ljh.zip; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import j

Java Socket编程基础篇

原文地址:Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术.下面就让我们一起揭开Socket的神秘面纱. Socket编程 网络基础知识点: 两台计算机间进行通讯需要以下三个条件 IP地址.协议.端口号: IP地址:定位应用所在机器的网络位置.(比如家庭住址:北京市朝阳区XX街道XX小区) 端口号