- 浏览: 394598 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (760)
- 股票日志 (26)
- Selenium (0)
- selenium 2 环境的搭建 (1)
- 并发 (7)
- 框架开发 (1)
- 动态代理 (2)
- Struts2 (2)
- POI (2)
- jdk (3)
- maven (31)
- spring (35)
- mysql (31)
- 工作机会 (3)
- xtream (1)
- oracle dbms_metadata GET_DDL (0)
- SSI (1)
- DB (61)
- powermock (4)
- java 基础 (25)
- 多线程 (11)
- 高手 (2)
- java 底层 (2)
- 专业网站 (1)
- 开发联想 (1)
- 开发联想 (1)
- bat文件 (2)
- 清queue 语句 (1)
- 清queue 语句 (1)
- jquery (7)
- html5 (1)
- Jenkins (10)
- Linux (17)
- 工作issue (2)
- tomcat log (3)
- jvm (23)
- 项目细节 (0)
- oracle (41)
- 泛型 (3)
- 新知识点 (1)
- 数据库ddl 语句 (0)
- AQ (2)
- jms (0)
- 网络资源 (6)
- github (6)
- Easymock (1)
- Dom 解析XML (1)
- windows命令 (2)
- java (7)
- 正则表达式 (5)
- sequence (1)
- oracle 表meta信息 (1)
- 小工具技巧 (1)
- 辅助工具 (1)
- Junit (1)
- 泛型 generic (2)
- Java程序设计 (1)
- cglib (2)
- 架构师之路 (1)
- 数据库连接池 (5)
- c3p0 (1)
- eclipse使用 (1)
- oracle sql plus (1)
- 码农人生 (3)
- SVN (15)
- sqlplus (2)
- jsoup (1)
- 网络爬虫 (2)
- 新技能 (1)
- zookeeper (4)
- hadoop (1)
- SVNKIT (1)
- 从工具到知识点的整理 (1)
- log4j (13)
- 读文件 (0)
- 转义字符 (1)
- command (1)
- web service (3)
- 锁 (1)
- shell 脚本 (1)
- 遇到的错误 (2)
- tomcat (14)
- 房产 (5)
- bootstrap jquery ui (1)
- easyui (2)
- 个人征信 (1)
- 读写分离 (1)
- 备份 (1)
- rmi (6)
- webservice (1)
- JMX (4)
- 内存管理 (3)
- java设计 (1)
- timer (1)
- lock (2)
- concurrent (2)
- collection (1)
- tns (1)
- java基础 (15)
- File (1)
- 本机资源 (1)
- bat (1)
- windows (4)
- 数据结构 (3)
- 代码安全 (1)
- 作用域 (1)
- 图 (2)
- jvm内存结构 (1)
- 计算机思想 (1)
- quartz (6)
- Mongo DB (2)
- Nosql (4)
- sql (5)
- 第三方Java 工具 jar 项目 (2)
- drools (1)
- java swing (2)
- 调用console (1)
- runtime (1)
- process (1)
- swing (2)
- grouplayout (1)
- dubbo (0)
- bootstrap (0)
- nodejs (2)
- SVN hooks (1)
- jdbc (3)
- jdbc error (1)
- precedure (1)
- partition_key (1)
- active mq (1)
- blob (2)
- Eclipse (6)
- web server (1)
- bootstrapt (2)
- struts (1)
- ajax (1)
- js call back (1)
- 思想境界拓展 (1)
- JIRA (1)
- log (1)
- jaxb (3)
- xml java互相转换 (1)
- 装修 (2)
- 互联网 (2)
- threadlocal (3)
- mybatis (22)
- xstream (1)
- 排序 (1)
- 股票资源 (1)
- RPC (2)
- NIO (3)
- http client (6)
- 他人博客 (1)
- 代理服务器 (1)
- 网络 (2)
- web (1)
- 股票 (5)
- deadlock (1)
- JConsole (2)
- activemq (3)
- oralce (1)
- 游标 (1)
- 12月13日道富内部培训 (0)
- grant (1)
- 速查 (2)
- classloader (4)
- netty (4)
- 设计模式 (2)
- 缓存 (2)
- ehcache (2)
- framework (1)
- 内存分析 (2)
- dump (1)
- memory (2)
- 多高线程,并发 (1)
- hbase (2)
- 分布式系统 (1)
- socket (3)
- socket (1)
- 面试问题 (1)
- jetty (2)
- http (2)
- 源码 (1)
- 日志 (2)
- jni (1)
- 编码约定 (1)
- memorycache (1)
- redis (13)
- 杂谈 (1)
- drool (1)
- blockingqueue (1)
- ScheduledExecutorService (1)
- 网页爬虫 (1)
- httpclient (4)
- httpparser (1)
- map (1)
- 单例 (1)
- synchronized (2)
- thread (1)
- job (1)
- hashcode (1)
- copyonwriteArrayList (2)
- 录制声音 (1)
- java 标准 (2)
- SSL/TLS (1)
- itext (1)
- pdf (1)
- 钻石 (2)
- sonar (1)
- unicode (1)
- 编码 (4)
- html (1)
- SecurityManager (1)
- 坑 (1)
- Restful (2)
- svn hook (1)
- concurrentHashMap (1)
- 垃圾回收 (1)
- vbs (8)
- visual svn (2)
- power shell (1)
- wmi (3)
- mof (2)
- c# (1)
- concurrency (1)
- 劳动法 (1)
- 三国志游戏 (2)
- 三国 (1)
- 洪榕 (2)
- 金融投资知识 (1)
- motan (1)
- tkmybatis mapper (1)
- 工商注册信息查询 (1)
- consul (1)
- 支付业务知识 (2)
- 数据库备份 (1)
- 字段设计 (1)
- 字段 (1)
- dba (1)
- 插件 (2)
- PropEdit插件 (1)
- web工程 (1)
- 银行业知识 (2)
- 国内托管银行 (1)
- 数据库 (1)
- 事务 (2)
- git (18)
- component-scan (1)
- 私人 (0)
- db2 (14)
- alias (1)
- 住房 (1)
- 户口 (1)
- fastjson (1)
- test (6)
- RSA (2)
- 密钥 (1)
- putty (1)
- sftp (1)
- 加密 (1)
- 公钥私钥 (3)
- markdown (1)
- sweet (1)
- sourcetree (1)
- 好工具 (1)
- cmd (1)
- scp (1)
- notepad++ (1)
- ssh免密登录 (1)
- https (1)
- ssl (2)
- js (2)
- h2 (1)
- 内存 (2)
- 浏览器 (1)
- js特效 (1)
- io (1)
- 乱码 (1)
- 小工具 (1)
- 每周技术任务 (1)
- mongodb (7)
- 内存泄漏 (1)
- 码云 (2)
- 如何搭建java 视频服务器 tomcat (1)
- 资源 (1)
- 书 (1)
- 四色建模法 (1)
- 建模 (1)
- 配置 (1)
- 职位 (1)
- nginx (1)
- excel (1)
- log4j2 (2)
- 做菜 (1)
- jmap (1)
- jspwiki (1)
- activiti (1)
- 工作流引擎 (1)
- 安卓 (1)
- acitviti 例子 (1)
- 二维码 (1)
- 工作流 (1)
- powerdesign (2)
- 软件设计 (1)
- 乐观锁 (1)
- 王者荣耀 (1)
- session (2)
- token (5)
- cookie (4)
- springboot (24)
- jwt (2)
- 项目路径 (1)
- magicbook (1)
- requestType (1)
- json (2)
- swagger (1)
- eolinker (1)
- springdata (1)
- springmvc (1)
- controlleradvice (1)
- profile (1)
- 银行四要素 (1)
- 支付人员资源 (1)
- 支付渠道 (1)
- yaml (1)
- 中文编码 (1)
- mongo (2)
- serializable (1)
- 序列化 (1)
- zyd (1)
- unittest (1)
- 工具 (1)
- Something (1)
- 通达信 (1)
- protobuf (1)
- 算法 (1)
- springcloud (2)
- hikari (1)
- rocketmq (7)
- cachecloud (1)
- serfj (1)
- axure (1)
- lombok (1)
- 分布式锁 (1)
- 线程 (2)
- 同步代码块 (1)
- cobar (1)
- mq (1)
- rabbitmq (1)
- 定时执行 (1)
- 支付系统 (3)
- 唱歌 (1)
- elasticjob (1)
- 定时任务 (1)
- 界面 (1)
- flink (2)
- 大数据 (1)
- 接私活 (0)
- 内部培训 (2)
最新评论
-
dannyhz:
做股票从短线 试水,然后 慢慢发现 波段和 中期的故事可挖, ...
搭台唱戏 -
dannyhz:
http://developer.51cto.com/art/ ...
如何自己开发框架 它的注意点是什么
程序实现的是一个读取照片(可改为其文件类型)的服务端,可同时接受多个客户端连接,并且同时接受多张图片的数据。主要是通过多线程控制,每次检测到有请求连接,则开辟一个新线程,新线程的作用是接受图片, 通过不同线程同时运行达到可同时接收多张图片。 1. 这是服务端的源代码: import java.io.*; import java.net.*; public class LoadPicServer { public static void main(String[] args) throws IOException { int listen_port = 10005; //监听的端口号 long filecount = 1; ServerSocket ss = new ServerSocket(listen_port); //监听listen_port端口 if(ss.isBound()) System.out.println("The Server is listenning the port " + listen_port); while(true) { Socket s = ss.accept(); //检查是否有连接,该语句是阻塞语句,如果没有则会停在这。 if(s.isConnected()) { //如果有连接则返回true,执行下面语句 String filename = new String("ServerPic" + filecount++ + ".jpg"); System.out.println(s.getInetAddress().getHostAddress() + " is connected!"); //获取已连接的客户端的IP new Thread(new LoadPic(s,filename)).start(); //开启新线程接收图片,主线程继续回去while最开始检查有无连接。 } } } } /* * 该类实现Runnable接口,用于实现多线程复制图片。 * 该类的作用就是与主线程传入的Socket连接进行通信,从网络流获取对方的传送的文件数据。 * */ class LoadPic implements Runnable { Socket s = null; String filename = null; BufferedInputStream bufin = null; BufferedOutputStream bufout = null; PrintWriter return_txt = null; public LoadPic(Socket s,String filename) { this.s = s; this.filename = filename; } public void run() { try { bufin = new BufferedInputStream(s.getInputStream()); //获取传入Socket的输入流,用于读取图片数据 bufout = new BufferedOutputStream(new FileOutputStream(filename)); //在当前文件夹创建名为filename的文件,作为输出流的目的。 return_txt = new PrintWriter(new OutputStreamWriter(s.getOutputStream()),true); //该流用来向客户端发送确认信息。 byte[] bufdata = new byte[1024]; int len; while((len = bufin.read(bufdata)) != -1) { //从输入流读取数据,不为-1,即文件结束则继续读。 bufout.write(bufdata,0,len); //往文件里写数据 bufout.flush(); } return_txt.println("服务器接收成功!"); } catch (IOException e) { e.printStackTrace(); } finally { try { s.close(); bufin.close(); bufout.close(); return_txt.close(); } catch (IOException e) { e.printStackTrace(); } } } } 2. 这是客户端源代码,可同时开启多个客户端,做图片并行传输测试。因为多个客户端代码基本一样,所以只需看下面代码即可: import java.net.*; import java.io.*; //该类是客户端类,向服务器段发送请求连接,连接后就可以发送图片数据。 class UpPicClient { public static void main(String[] args) throws IOException,InterruptedException { Socket s = new Socket("192.168.1.7",10005); if(s.isBound()) { System.out.println("Connect successful!"); BufferedInputStream bufin = new BufferedInputStream(new FileInputStream("1.jpg")); BufferedOutputStream bufout = new BufferedOutputStream(s.getOutputStream()); BufferedInputStream confirm_txt = new BufferedInputStream(s.getInputStream()); byte[] bufdata = new byte[1024]; int len; while((len = bufin.read(bufdata)) != -1) { bufout.write(bufdata,0,len); bufout.flush(); } s.shutdownOutput(); System.out.println("发送结束!"); len = confirm_txt.read(bufdata,0,bufdata.length); String str = new String(bufdata,0,len); System.out.println(str); s.close(); bufin.close(); bufout.close(); confirm_txt.close(); } } }
相关推荐
在Delphi的SocketServer中,通过OnAccept事件处理程序,我们可以获取到新连接的客户端对象,然后通过这个客户端对象的SendData或Write方法向客户端发送数据,同时也可以通过ReceiveData或Read方法接收客户端的数据,...
为了实现类似Python SocketServer的多线程或子进程处理请求的功能,我们可能需要结合使用C++的线程库(如std::thread)或进程库(如fork)。每个新连接可以创建一个新的线程或子进程来处理,这样可以并发地服务多个...
服务端(SocketServer)主要任务是监听特定的IP地址和端口,等待客户端的连接请求。当接收到连接请求时,服务端会创建一个新的Socket实例来处理这个连接,并可以设置一个回调函数来处理接收到的数据。在C#中,这通常...
在本案例中,"socketserver FTP资源共享工具"可能是一个利用SocketServer模块实现的FTP服务器程序,用于在局域网或互联网上分享文件。 FTP(File Transfer Protocol)是一种标准的网络协议,设计用于在网络上进行...
本教程将通过标题"“C++实现简单Socket编程,多客户端登陆以及检测客户端状态”"深入讲解如何使用C++进行Socket编程,包括多线程服务器的实现、TCP与UDP数据传输以及管理多个客户端连接。 首先,我们需要理解Socket...
- **ThreadingMixIn**:为服务器添加多线程支持,允许同时处理多个客户端连接。 - **ForkingMixIn**:实现多进程服务器,每个连接都会创建一个新的子进程来处理。 5. **自定义请求处理器**:SocketServer允许...
总之,Python的`socket`和`socketserver`模块提供了强大的工具来实现多线程多客户端的TCP通信。通过创建自定义的请求处理器和利用多线程,我们可以构建能够高效处理大量并发连接的服务器。在实际应用中,还需要考虑...
本教程主要探讨的是如何使用TCP协议进行IP通信,并实现一个能够同时处理多个客户端连接的服务端程序。我们将围绕“多线程”和“SOCKET”这两个关键标签来深入讲解。 TCP(Transmission Control Protocol)是一种...
在本文中,我们将深入探讨如何使用Windows Presentation Foundation (WPF) 实现Socket服务端来处理多个客户端的连接。标题中的“WPF-Socket服务端对多个客户端_新”表明这是一个更新过的版本,解决了之前版本的一些...
本示例中的"socket实现客户端与服务器端通信"是一个简单的C#项目,它演示了如何使用Socket类在两者之间建立连接并进行数据传输,同时包含了异常退出的处理机制。这个项目包含两个部分:SocketServer和SocketClient,...
在本文中,我们将深入探讨如何使用Python的socketserver模块实现服务器与多个客户端的多线程连接。 首先,我们需要理解socket和socketserver的概念。Socket是网络编程的基本接口,它提供了进程间通信(IPC)的能力...
SuperSocket提供了一个基本的服务模型,包括SocketServer和SocketSession,用于处理客户端连接和数据传输。SocketServer作为服务器端的核心,负责监听端口、接受新连接并分配SocketSession处理客户端请求。...
在提供的文件列表中,"SocketServer"可能包含了服务端的代码实现,而"SocketClient"则包含了客户端的代码。通过分析这两个文件,你可以看到如何将上述理论应用到实际代码中。学习这些实例有助于深入理解Socket编程,...
本文将深入探讨如何利用C#的Socket类和单例设计模式来实现服务器与客户端的交互。 首先,让我们了解什么是Socket。Socket是网络通信的基本单元,可以看作是两个计算机之间进行数据传输的端点或连接。在TCP/IP协议栈...
在Java中,Socket类和ServerSocket类提供了客户端和服务端的实现。 - **TCP/IP协议**:传输控制协议/因特网协议,确保数据可靠传输,通过三次握手建立连接,四次挥手断开连接。 2. **创建Socket Server** - **...
本教程将深入探讨如何创建一个Socket服务端,该服务端能够同时处理多个客户端连接,并能实时监控客户端的状态。 首先,我们需要了解Socket的基本概念。Socket是网络通信中的一个抽象层,它封装了底层的TCP/IP协议,...
总之,SocketServer_nightct1_socketserver_socketc#_是一个C#实现的TCP/IP网络通信客户端程序,通过Socket类实现了客户端与服务器之间的数据传输。理解Socket的工作原理和C#中的使用方法,是进行网络编程的基础。...