- 浏览: 1238512 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (193)
- ant/maven (6)
- algorithm (5)
- tomcat/weblogic/jboss (6)
- javascript/jquery (13)
- java (33)
- flex/flash (0)
- JPA/Hibernate/myBatis (18)
- java concurrent (7)
- test (2)
- windows/linux (6)
- java collection (7)
- design pattern (2)
- life/health (3)
- database (12)
- IDE (4)
- spring/ejb (20)
- html/css/ckeditor (7)
- jsp/servlet (3)
- java io (13)
- java security (4)
- jni (0)
- svn/git (2)
- english (2)
- java jmx (1)
- xml (1)
- struts/springmvc (9)
- middleware (2)
- cache (1)
- cglib (3)
最新评论
-
jlotusYo:
博主,真感谢。
Java 密码扩展无限制权限策略文件 -
senninha:
这个。。是api说明吧。。
ScheduledExecutorService 源码分析 -
zoutao2008:
请问大文件如何处理?按你这种方式的话,文件超过200M时就会报 ...
hessian系列之二:上传文件 -
lwj1113:
lwj1113 写道谢谢博主这么细致的demo;在系列五中通过 ...
myBatis系列之五:与Spring3集成 -
lwj1113:
谢谢博主这么细致的demo;在系列五中通过testng测试类跑 ...
myBatis系列之五:与Spring3集成
Socket编程就是根据服务器/客户端模型,在Socket API的基础上开发的网络计算机和进程间相互通信的应用。
1. 服务端绑定一个端口号,并在此端口监听客户端的连接,线程会block直到有客户连接请求,读取请求信息,然后处理并返回。
2. 客户端和指定的服务器的指定端口建立连接,发送请求信息,并等待返回信息。
服务端:
客户端:
其中:
1. out = new PrintWriter(connection.getOutputStream()); 使用系统默认的编码格式。
如果默认编码不符合要求,使用OutputStreamWriter指定:
out = new PrintWriter(new OutputStreamWriter(connection.getOutputStream(), "utf-8"));
2. 可以把手动flush改成自动的:
out = new PrintWriter(connection.getOutputStream(), true);
这样,当println, printf, format方法调用时,将缓存输出到底层流并清空缓存。
3. 必须首先开启服务端,否则客户端建立连接的时候会报java.net.ConnectException: Connection refused: connect
1. 服务端绑定一个端口号,并在此端口监听客户端的连接,线程会block直到有客户连接请求,读取请求信息,然后处理并返回。
2. 客户端和指定的服务器的指定端口建立连接,发送请求信息,并等待返回信息。
服务端:
public class MyServer { ServerSocket server; Socket client; BufferedReader in; PrintWriter out; public MyServer() { try { // Instantiate a ServerSocket with specified port server = new ServerSocket(4451); // Listen on the port to receive the connection request client = server.accept(); // Construct a reader to get the information from the client in = new BufferedReader(new InputStreamReader(client.getInputStream())); // Construct a writer to respond to the client out = new PrintWriter(client.getOutputStream()); // Continually to retrieve the message from the client while (true) { String input = in.readLine(); System.out.println(input); out.println("has received: " + input); out.flush(); if (input.equals("end")) break; } } catch (IOException ex) { ex.printStackTrace(); } finally { // Release the resources - omitted } } public static void main(String[] args) { new MyServer(); } }
客户端:
public class MyClient { Socket connection; BufferedReader in; PrintWriter out; BufferedReader reader; public MyClient() { try { // Establish a connection to the Socket server connection = new Socket(InetAddress.getLocalHost(),4451); // Construct a reader to get the response from the server in = new BufferedReader(new InputStreamReader(connection.getInputStream())); // Construct a writer to send messages to the server out = new PrintWriter(connection.getOutputStream()); // Construct a reader to accept the user input reader = new BufferedReader(new InputStreamReader(System.in)); // Continuously send out the messages to the server and receive the response while (true) { String str = reader.readLine(); out.println(str); out.flush(); System.out.println("sent out: " + str); if (str.equals("end")) break; System.out.println(in.readLine()); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // Release the resources - omitted } } public static void main(String[] args) { new MyClient(); } }
其中:
1. out = new PrintWriter(connection.getOutputStream()); 使用系统默认的编码格式。
如果默认编码不符合要求,使用OutputStreamWriter指定:
out = new PrintWriter(new OutputStreamWriter(connection.getOutputStream(), "utf-8"));
2. 可以把手动flush改成自动的:
out = new PrintWriter(connection.getOutputStream(), true);
这样,当println, printf, format方法调用时,将缓存输出到底层流并清空缓存。
3. 必须首先开启服务端,否则客户端建立连接的时候会报java.net.ConnectException: Connection refused: connect
发表评论
-
Netty系列之二、Netty组件
2014-10-12 19:55 0Netty主要由以下几个组件构成: Bootstrap o ... -
Netty系列之二:传输方式
2014-09-17 22:35 0NIO (Non-blocking I/O) io.netty ... -
Java正则表达式实例
2014-08-25 22:50 1898题目: 有两个文件context.txt和words ... -
quartz系列之九:存储
2014-08-05 13:16 0这里以1.8.x为例: 任务 ... -
JVM 四种引用
2014-04-24 19:56 17251. 强引用 指通过普通 ... -
Proxy 源码分析
2014-04-21 10:47 0public class Proxy implements ... -
NIO UDP 编程
2014-04-17 23:18 4214和TCP的SocketChannel类似,UDP的Dat ... -
Matcher 源码分析
2014-04-15 14:45 0首先看下接口: public interface Matc ... -
BTrace 使用
2014-03-20 18:03 0简介 Btrace (Byte Trace)是Sun推出的一款 ... -
NIO Socket 编程
2014-04-11 22:48 1612Java NIO (Nonblocking IO)解决了常规I ... -
hessian系列之二:上传文件
2014-02-17 17:16 6158hessian较早版本通过 byte[] 进行文件传输;4.0 ... -
hessian系列之三:与Spring集成
2014-02-17 20:21 17818Spring封装了hessian客户端和服务端的通用代码,把实 ... -
hessian系列之一:Hello world
2014-01-06 20:51 2262Hessian是一个Web Service的轻量级二进制协议, ... -
XStream:自定义转换器
2013-12-30 22:47 0XStream是一款不错的oxm (Object-XML ma ... -
Http连接工具类
2013-12-28 16:13 0public class HttpConnUtil { ... -
Integer源码分析
2013-12-26 19:59 0private static String toU ... -
全排序
2013-12-23 21:02 0写一个函数, 如 foo(String str), 打印出 s ... -
logback系列之四:输出日志到不同文件
2013-12-03 16:25 68772logback系列之一:输出日志到控制台 logback系列之 ... -
Properties 源码分析
2013-11-26 10:32 01. Properties类扩展了Hashtable,用来保存 ... -
logback系列之三:输出日志到文件(滚动)
2013-11-16 23:37 64289logback系列之一:输出日志到控制台 logback系列之 ...
相关推荐
这是两个简单的socket与线程的小例子,一个是单个客户端向服务端发送图片,另外一个是多个客户端向服务端发送图片,例子都是.java文件,复制到eclipse中便可以直接使用的,对于刚刚接触线程与socket网络编程的人,...
1)设计程序,分别构建通信的两端:服务器端和客户端应用程序,套接字类型为面向连接的Socket,自己构建双方的应答模式,实现双方的数据的发送和接收(S发给C,C发给S)。 2)服务端程序能响应单个或任意多个客户端连接...
2.2.3 单个文件编译成执行文件 22 2.2.4 编译生成目标文件 22 2.2.5 多文件编译 23 2.2.6 预处理 24 2.2.7 编译成汇编语言 24 2.2.8 生成和使用静态链接库 25 2.2.9 生成动态链接库 26 2.2.10 动态...
Socket之编程 基于Serializable接口类进行电脑端和手机端的网络数据交互,其中没有用json传输数据, 此次程序是进行单个实体类提交或者通过list集合类进行整体提交的方式进行程序的数据交互, 再客户端还添加了判断...
在学习《UNIX网络编程》基础上自己动手实现TCP服务器和客户端通讯,这个版本是进阶版程序——实现多个客户端的之间的通讯。...初学者可以休息我的入门版程序——实现单个客户端的之间的通讯,可见我的其他资源。
单个客户端与服务器相连以及多个客户机与服务器相连这里面有非常详细的说明,是一个值得一看的小论文。 同时还实现用计算机名寻找其IP地址的功能!!! <br>
该软件是一个基于java语言的socket编程,可以实现单个服务器对应多个客户端的聊天。采用swt,功能还是比较完善的。
所有这些都是从单个线程驱动的,使其对客户端(例如,允许 I/O 在 AWT 线程中完成而不需要任何线程)和服务器编程(所有连接的 1 个线程而不是 2 个线程/联系)。 Naga 在内部是一个简单的 NIO 实现,没有抛出任何...
1)设计程序,分别构建通信的两端:服务器端和客户端应用程序,套接字类型为面向连接的Socket,自己构建双方的应答模式,实现双方的数据的发送和接收(S发给C,C发给S)。 2)服务端程序能响应单个或任意多个客户端...
自制C#socket通信源码,带注释,网络编程小白入门帮手。支持多点通信,单个服务器对多个客户端。
可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中...
第11章 函数和函数式编程 11.1 什么是函数? 11.1.1 函数vs过程 11.1.2 返回值与函数类型 11.2 调用函数 11.2.1 函数操作符 11.2.2 关键字参数 11.2.3 默认参数 11.2.4 ...
图2 面向连接的SOCKET编程模型 图3 面向非连接的SOCKET编程模型 Windows Sockets规范中定义了一个新的数据类型 SOCKET,这一类型的定义对于将来Windows Sockets规范的升级是必要的。这一类型的定义保证了应用程序向...
Python核心编程第二版(ok) 第1部分 Python核心 第1章 欢迎来到Python世界 1.1 什么是Python 1.2 起源 1.3 特点 1.3.1 高级 1.3.2 面向对象 1.3.3 可升级 1.3.4 可扩展 ...
服务器与客户端建立连接需要使用到一些接口,包括但不限于socket、bind、listen、accept.高并发编程会有一些服务器模型,例如reactor或proactor。这两类都要使用到IO多路复用,O多路复用是指单个进程/线程就可以同时...
※分别开发服务器端和客户端,通过Socket模块实现网络通信,模拟实现FTP主要的文件下载、上传功能、实现多用户并发在线使用。 第六天 1、 项目实战三、开发运维审计服务器,实现公司全网用户操作审计需求 ※开发一个...
第2 章Linux编程环境....................................................................................................14 2.1 Linux环境下的编辑器................................................. 14 ...
技术要点是Socket编程,在数据库服务器上运行服务程序,该服务程序监听特定端口、执行代理程序发来的SQL语句并返回结果;代理程序负责接收客户端的SQL语句并转发给服务器,然后再把服务器返回的结果转
作者在本文中将重点介绍子系统所应用的核心技术——微服务、反射、 对象序列化、多线程以及基于 TIP/IP 的 Socket 通讯等,此外还通过具体的程序代码实现为 读者介绍微服务的底层实现原理、Socket 通讯编程实现。...
第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7...