- 浏览: 467425 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- java基础 (59)
- struts (8)
- spring (8)
- 数据库 (8)
- java 网络编程 (29)
- hibernate (3)
- JavaScript (10)
- 日志管理 (2)
- jsp (4)
- servlet (7)
- xml (4)
- ajax (2)
- web service (4)
- 算法与数据结构 (13)
- java 反射机制 (11)
- java 泛型 (3)
- java I/O (8)
- java 线程 (12)
- JavaEE (6)
- java解惑 (33)
- 工具 (5)
- MyEclipse编程实践 (1)
- OSGI (2)
- 设计模式 (9)
- 正则表达式 (0)
- EJB (3)
- Ubuntu linux (6)
- Android (1)
- web前端 (2)
- 找工作 (1)
- SCA (1)
- maven (1)
- 缓存 (1)
- json (1)
- javamail (1)
- 工作笔记 (2)
最新评论
-
霜花似雪:
博主可以分享一下源码吗?
使用maven构建web项目实例 -
王庆波-行:
很好的demo!
memcache使用实例 -
surpassno:
大写的牛逼
java可视化显示内存使用情况 -
zhulin0504:
怎么访问NetEcho.html页面呀???
applet与servlet的网络通信 -
springdata:
java多线程实例demo源代码下载:http://www.z ...
java多线程例子
客户端
服务器端
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; public class MultiJabberClient { static final int MAX_THREADS = 10; public void start() throws UnknownHostException, InterruptedException { InetAddress addr = InetAddress.getByName("bupt"); // 主机名 while (true) { if (JabberClientThread.getThreadCount() < MAX_THREADS) new JabberClientThread(addr); // addr是服务器的地址 } } public static void main(String args[]) throws UnknownHostException, InterruptedException { new MultiJabberClient().start(); } } class JabberClientThread extends Thread { private static int counter = 0; private static int threadcount = 0; private int id = counter++; private Socket socket; private BufferedReader in; private PrintWriter out; public JabberClientThread(InetAddress addr) { System.out.println("Making Client " + id); threadcount++; try { socket = new Socket(addr, MultiJabberServer.PORT); } catch (IOException e) { e.printStackTrace(); } try { in = new BufferedReader(new InputStreamReader(socket .getInputStream())); out = new PrintWriter(socket.getOutputStream(), true); start(); } catch (IOException e) { e.printStackTrace(); try { socket.close(); } catch (IOException e1) { e1.printStackTrace(); } } } public void run() { try { out.println("hello"); out.println("bye"); String str = in.readLine(); System.out.println(str); // } out.println("END"); } catch (Exception e) { e.printStackTrace(); } finally { System.out.println("Client " + id + " closing..."); try { socket.close(); } catch (IOException e) { e.printStackTrace(); } threadcount--; } } public static int getThreadCount() { return threadcount; } }
服务器端
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class MultiJabberServer { public static final int PORT = 8080; //端口可以任意指定大于1024的端口号 public void start() throws IOException{ ServerSocket s = new ServerSocket(PORT); System.out.println("Server started."); try{ while(true){ final Socket socket = s.accept();//阻塞,直到建立一个连接,通常,阻塞是由循环产生的。 try{ new ServerOneJabber(socket); //监听到一个端口,就新建一个线程进行执行 } catch(Exception e){ socket.close(); } } } finally{ s.close(); } } public static void main(String args[]) throws IOException{ new MultiJabberServer().start(); } } class ServerOneJabber extends Thread{ private Socket socket; private BufferedReader in; private PrintWriter out; public ServerOneJabber(Socket s) throws IOException{ socket = s; in = new BufferedReader( new InputStreamReader(socket.getInputStream())); //负责读取来自客户端的请求 out = new PrintWriter(socket.getOutputStream(), true); // 用来向客户端会送响应的 start(); } public void run() { System.out.println(socket.getInetAddress()+":"+socket.getPort()); try{ while(true){ String str = in.readLine(); //从客户端读取的字符串 if(str.equals("END")) break; System.out.println("Echoing: " + str); out.println(str); } } catch (IOException e) { e.printStackTrace(); } finally{ System.out.println("closing..."); try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
发表评论
-
计算机网络知识
2011-06-01 16:19 792一个http请求的详细过程 我们来看当我们在浏览器输入htt ... -
java udp socket实例
2010-12-06 12:28 7119客户端: package udp; import jav ... -
线程池实现tcp socket
2010-12-01 17:23 2879前面的程序,当一个客户端请求到来时,服务器端就会临时性的创建一 ... -
tcp socket实例(改进)
2010-12-01 16:16 1592上一篇的程序服务器端只能接受一个客户端请求,本篇改为模拟多客户 ... -
java tcp socket实例
2010-12-01 13:44 1624网络编程的基本模型就是客户端到服务器端模型,一段必须提供一个固 ... -
telnet协议(转)
2010-10-14 17:17 1138我们知道Telnet服务器软 ... -
whois协议(转)
2010-10-14 14:28 1360当我们预备建立一个Web站点,就必须向域名登记机构申请一个In ... -
java 网络协议(一)Tcp多线程服务器端编程
2010-10-14 11:33 54851,通用服务器代码: package multiThread; ... -
java 网络协议(一)UDP
2010-10-14 09:24 1475UDP测试程序,无需建立连接 package udp; ... -
java 网络协议(一)Tcp
2010-10-14 08:52 51361,简化的服务器端程序 package tcp; imp ... -
java 网络协议(一)InetAddress和Socket(含源码)
2010-10-14 08:24 18821,ip地址和主机名互换 package getip; ... -
ftp协议2(转)
2010-10-12 16:26 962FTP协议工作原理 FTP有 ... -
ftp协议(转)
2010-10-12 16:21 1265ftp协议 FTP协议将使用两 ... -
SMTP服务协议(转)
2010-10-11 15:31 1245SMTP服务概述 鉴于本课程的默认读者群是那些对Inter ... -
利用socket发送接收邮件(转)
2010-10-11 15:18 4188这是在网上摘的,执行接收邮件出现:530 Authentica ... -
jdk6.0从入门到精通-----chapter5网络编程 新I/O(含源码下载)
2010-09-21 10:13 1429本例向用户通过参数指定的主机端口发送一段请求报文,然后读取和打 ... -
jdk6.0从入门到精通-----chapter6--http
2010-09-14 16:32 944用httpconnection进行文件下载,建立一般的jav ... -
java自学===Filter类的应用,验证用户
2010-09-14 14:37 938Filter类 package com; import ... -
java自学===Filter类的应用,网站数量统计
2010-09-14 12:31 1940package filterStatistic; imp ... -
jdk6.0从入门到精通-----chapter5网络编程 udp套接字
2010-09-12 13:46 1159用到的主要类DatagramPacket,DatagramSo ...
相关推荐
在Java中,Socket和ServerSocket类提供了套接字编程的基本功能。本文将深入探讨Java套接字编程的相关知识点,包括Socket和ServerSocket的使用、数据传输、异常处理以及实际应用中的常见问题。 1. **Socket类**:...
### Java套接字编程详解 #### 一、引言 随着互联网技术的不断发展与普及,网络编程成为现代软件开发中不可或缺的一部分。Java作为一种广泛应用的编程语言,提供了丰富的API支持网络编程,尤其是对于套接字(Socket)...
Java的Socket套接字编程是网络通信中的基础技术,它提供了两台计算机间低级别的连接。在Java中,Socket类和ServerSocket类是实现客户端-服务器通信的核心组件。本资源包含的是基于Java的Socket套接字编程的源代码...
Java套接字编程是网络通信的核心技术之一,主要用于实现客户端与服务器之间的数据交换。本文将深入探讨Java中的Socket编程,包括基本概念、工作原理、创建和使用Socket的过程,以及常见问题和解决策略。 1. 基本...
1. **TCP/IP基础知识**:套接字编程基于TCP/IP协议栈,TCP是一种面向连接的、可靠的传输层协议,而IP则负责在网络中路由数据包。理解这两个协议的工作原理对于进行套接字编程至关重要。 2. **ServerSocket类**:在...
### Java套接字编程详解 #### 一、Java网络编程概览 Java作为一种全面支持网络功能的编程语言,其强大的网络编程能力主要归功于它的一系列网络API,特别是位于`java.net`和`javax.net`包中的API。这些API为开发者...
"Java套接字编程详解" Java套接字编程是Java开发网络软件的核心技术之一,利用Java提供的强大网络API,可以轻松地开发网络通信软件。在这篇文章中,我们将详细介绍套接字(Socket)的概念,并通过实例说明如何使用...
TCP套接字是计算机网络通信中的基础组件,尤其在文件传输方面扮演着重要角色。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,而套接字(Socket)是TCP/IP协议族提供...
Java套接字网络编程是一种强大的技术,用于开发基于TCP/IP网络的Java程序。Java的这种力量来源于他独有的用于网络的API,这些API是一系列的类和接口,均位于包java.net和javax.net中。 套接字(Socket)是Java套接...
Java Socket套接字是Java网络编程中的核心组件,它提供了应用程序之间进行低级通信的机制。Socket基于TCP/IP协议,允许两台计算机通过网络进行双向通信。本篇文章将深入探讨Java Socket的基础知识,包括其原理、创建...
本文主要探讨了基于Java语言的流式套接字编程,首先对套接字编程进行了介绍,接着分析了套接字编程所需的类,并提出了单服务器与多客户通信的设计思路,最后通过示例演示了程序,并提出了改进意见。 1. 套接字及TCP...
Java TCP套接字编程是网络通信中的核心技术,主要用于两台计算机之间建立可靠的数据传输通道。在Java中,Socket API提供了一种标准的方式来实现客户端-服务器应用程序。本篇将深入探讨Java Socket编程及其在构建聊天...
Java套接字编程是网络通信的核心技术之一,主要用于实现客户端与服务器端的双向通信。"Socket套接字—Java套接字编程(上1)"这个资料包可能包含了关于Java套接字的基础概念、创建和使用过程,以及相关实例。下面我们...
ServerSocket用于创建服务器端的监听套接字,等待客户端的连接请求。一旦有连接请求,ServerSocket会返回一个新的Socket实例,代表与客户端建立的连接。Socket类则用于创建客户端的通信套接字,它可以主动连接到...
### 套接字编程基础知识点详解 #### 1.1 什么是套接字 套接字(Socket),作为同一台主机内部应用层与传输层之间的接口,扮演着应用程序和网络之间的桥梁角色,即应用程序接口(API)。它允许应用程序通过网络进行...
8. **高级主题**:包括SSL/TLS安全套接字、广播与多播、套接字选择器等,这些都是在网络编程中可能遇到的复杂场景。 附带的源代码提供了丰富的示例,帮助读者更好地理解和实践书中的理论知识。源码涵盖各种Socket...
`Java+TCPIP+Socket编程(中文版).pdf`这个文件很可能包含了详细的教程和示例代码,可以帮助深入理解Java Socket编程的各种细节,包括如何设置套接字选项、处理多线程并发连接、使用NIO(非阻塞I/O)优化性能等高级...
本资料“Java TCP-IP Socket编程-卡尔弗特.pdf”旨在深入探讨如何利用Java语言进行TCP/IP套接字编程,构建稳定、高效的数据传输通道。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,而...
Java Socket套接字编程是Java网络编程中的核心部分,它提供了低级别的、进程间通信(IPC)的基础。在本文集中,我们深入探讨了Socket编程的各种概念、原理以及实践技巧。 一、Socket概述 Socket,也被称为套接字,...
"3_tcp.rar"这个压缩包文件包含了关于TCP套接字、TCP服务以及在Linux环境下实现聊天应用的相关资料,让我们深入探讨一下这些知识点。 首先,TCP套接字是实现TCP通信的基础。套接字(Socket)可以看作是两台计算机...