通过在如何使用socket进行java网络编程(一)中程序的编写,可以总结出一些常用的java socket编程的范例来. ServerSocket server = new ServerSocket(_PORT_); while (true) { Socket nextClient = server.accept(); SocketHandler handler = new SocketHandler(nextClient); Thread t = new Thread(handler); t…
Socket又称套接字,是连接运行在网络上两个程序间的双向通讯的端点. 一.使用Socket进行网络通信的过程 服务端:服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户端的连接请求. 客户端:客户端程序根据你服务器所在的主机名和端口号发出连接请求. 两者之间的通信是通过Socket完成的,我们可以认为Socket是两个城市之间的交通工具,有了它,就可以在两个城市之间穿梭了. Socket通信示例 主机A的应用程序和主机B的应用程序通信,必须通过Socket建立连接,而建立…
本篇文章继续记录java网络通讯编程的学习.在本系列笔记的第一篇中曾经记录过一个项目中的程序,当时还处于项目早期,还未进入与第三方公司的联调阶段,笔者只是用java写了一个client程序模拟了一下第三方发送报文. 在client程序printer.println(datagram)后,server程序可以接收报文并能执行:解析->报文转换->转发前置机->接收前置机处理结果->报文转换 这样一个处理过程.但进入与第三方公司的联调后,server程序暴露了一些个问题. (一). 首…
在上一篇的结尾,提到过用来处理每一个服务端accept到的socket,我们由原来最开始的单线程改成了多线程去处理,但是对每一个接收到的socket都new一个thread去处理,这样效率太低,我们需要使用线程池的方式来优化.  同时对java字符流和字节流也进行一次复习,嗯. 本篇我们讨论采用两种不同的方式来实现线程池优化,我们使用Java 5之后自带的线程池,以及使用apache commons pool2来实现一个线程池. 参考: http://www.cnblogs.com/Qian12…
以下例开始本文的内容: 例1,需求:上传图片. 客户端: 服务端点. 读取客户端已有的图片数据. 通过socket输出流将数据发给服务端. 读取服务端反馈信息. 关闭. class PicClient { public static void main(String[] args) throws IOException { /* * 一系列判断 */ if(args.length != 1) { System.out.println("请选择一个jpg格式的图片"); return;…
本篇记录: 1.再谈readLine()方法 2.什么是真正的长连接 最近又参与了一个socket的项目,又遇到了老生常谈的readLine()问题:对方通过其vb程序向我方socketServer程序发送报文,后天日志查看有read超时的异常. 关于line=readLine()方法,其为一个阻塞方法,遇到\r .\n.\r\n时会返回此时为止读到的数据,作为“一行”赋值给line变量.而之后除非超时或者发送端关闭输出流,readLine()才会返回null,代表读取结束.也就是说如果不是超时…
笔者进来遇到一个项目,一家公司的系统需要在完成自身业务逻辑的同时,接入到某银行的核心系统(这里准确说应该是前置机)进行一系列的账务处理,然后再将账务处理结果返回给该公司系统. 网络通信采用TCP协议. 由于公司方和银行的TCP协议报文有所不同,故整个项目的方案是在两者之间架设一个转发机(由银行方提供),用来进行协议报文的转换. 分析一下,整个系统的交易分为一下几个部分: 1.需要在转发机上建立一个socket服务器程序,用来监听来自于公司方的socket请求. 2.收到该请求后,分配一个线程,执…
DatagramSocket对象为基于UDP协议的Socket 构造器提供可以选择性绑定到指定端口和ip 创建完对象后调用:receive(DatagramPacket p) send(DategramPacket p) DategramPacket是发送和接收数据的载体(发送数据时的DatagramPacket的构造函数包含ip地址和端口号) MulticastSocket实现多点广播:可以将数据报以广播方式发送到客户端(是DatagramSocket的子类) 根据构造器创建对象 *****使…
向web站点发送get post请求,并从web站点取得响应 通相应的set方法,在调用connect()方法前,可以设置请求的各种参数,实现同浏览器类似的访问,调用connect()后可以调用相应的get的方法得到服务器返回的各种值(和浏览器页面一样,只是没有经过浏览器解析,阅读困难) 没设置setRequestProperty()也能正常运行,,, 1.集合Map所在的包:java.util 代码: package zhang; import java.net.*; import java.…
好久没有看过Java网络编程了,现在刚好公司有机会接触,顺便的拾起以前的东西 参照原博客:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html 一.网络编程  通过使用套接字来达到进程间通信目的的编程就是网络编程. 二.网络编程中常见的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定I…