- 浏览: 675511 次
- 性别:
- 来自: 安徽
文章分类
- 全部博客 (252)
- Html/Div+CSS (12)
- Js/Jquery (34)
- Flex (2)
- Ajax (3)
- Java (35)
- C# (15)
- Spring (16)
- Hibernate (13)
- Struts2 (12)
- Struts1 (7)
- DWR (1)
- iBatis/myBatis (9)
- Tag(JSTL、EL) (1)
- Android (44)
- SQL (7)
- SEO (7)
- Exception (3)
- Tool (10)
- Other (3)
- WebService (9)
- Apache (7)
- Ext (0)
- Utils (12)
- thinking in programme (2)
- Hadoop (0)
- ActiveMQ (0)
- HTML5/CSS3 (0)
- WPF (1)
- NodeJs (1)
- 设计模式 (0)
- 程序人生 (1)
- 随笔 (1)
- Linux (1)
- Load Balance (0)
最新评论
-
drinkjava2:
太复杂了而且不通用,利用ThreadLocal可完美解决这一问 ...
JDBC的多条件动态查询 -
u013107014:
multipartRequest.getFiles(" ...
多文件上传 by MultipartFile and Multiple -
liyys:
可惜没讲你mysql数据库的表的设计
iBatis入门 -
Mapple_leave:
效果还是挺不错的,谢谢了。
中文简体与繁体的转换 -
arcpad:
JS禁用浏览器退格键
TCP:是专门设计用于在不可靠的英特网上提供可靠的、端到端的字节流通信的协议,它是一个面向连接的协议,TCP连接是字节流而非报文流。
这里再简单说说UDP与TCP的区别:
TCP:可靠的连接传输,使用三方握手的方式完成通讯;
UDP:不可靠的连接传输,传输的时候接受方不一定可以接受的到;
在java中的所有网络程序的开发类都在java.net包中存在
Socket:两个Java应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket、Socket通常用来实现client—server连接、java.net包中定义的两个Socket和ServerSocket,分别用来实现双向连接的client和server端、建立连接时所需的寻址信息为远程计算机的IP地址和端口号(Port number)。
网络应用分为客户端和服务器端两部分,而Socket类是负责处理客户端通信的java类。通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据。
在java中使用Scoket(即套接字)完成TCP程序的开发,即使用此类可以方便的建立可靠的,双向的,持续的,点对点的通讯连接。
在Scoket的程序开发中,服务器端使用ServerSocket等待客户端的连接,对于java的网络编程来说,每一个客户端都使用一个Scoket对象表示。
在java的网络程序中,客户端只要符合来连接的通讯协议,那么服务器端都可以进行接受。
首先我们需要了解一下TCP Socket编程的思路:首先是编写服务器端和客户端:
1、开发服务器端,通过ServerSocket server=new ServerSocket(8889); 构造ServerSocket使得服务器在8889端口上监听。
2、通过ServerSocket的accept方法得到连接,此时程序进入到阻塞状态
3、通过打印流向客户端输出系信息。
4、然后依次关闭服务器端的Socket和ServerSocket。
5、开发客户端,通过Socket client=new Socket("localhost",8888) ;构造Socket实例。
6、最后通过一次性接受并关闭对应流和Socket;
通过Demo发现TCP Socket编程只要考察的是Socket编程IO流和线程。
IO流:这里我们使用打印流和缓冲流;
线程:这里我们使用并且如果要想实现可以开启多个客户端的,则需要使用线程,让每开启一个客户端我们就启动一个线程。达到实现多个客户端通讯。
在利用TCP Socket实现通讯中只要记住“服务器端的输出就是客户端的输入,客户端的输出就是服务器端的输入”即可。
线程类:
package com.iflytek.socket; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; /** * @author xudongwang 2012-1-9 * * Email:xdwangiflytek@gmail.com */ public class EchoThread implements Runnable { private Socket client = null; public EchoThread(Socket client) { this.client = client; } @Override public void run() { BufferedReader buf = null; // 接收输入流 PrintStream out = null; // 打印流输出最方便 try { out = new PrintStream(client.getOutputStream()); // 准备接收客户端的输入信息 buf = new BufferedReader(new InputStreamReader( client.getInputStream())); // 标志位,表示可以一直接收并回应信息 boolean flag = true; while (flag) { // 接收客户端发送的内容 String str = buf.readLine(); if (str == null || "".equals(str)) { // 表示没有内容 flag = false; // 退出循环 } else { // 如果输入的内容为bye表示结束 if ("bye".equals(str)) { flag = false; } else { out.println("ECHO : " + str); // 回应信息 } } } client.close(); } catch (Exception e) { } } }
服务器端:
package com.iflytek.socket; import java.net.ServerSocket; import java.net.Socket; /** * @author xudongwang 2012-1-9 * * Email:xdwangiflytek@gmail.com */ public class EchoThreadServer { public static void main(String args[]) throws Exception { ServerSocket server = null; // 定义ServerSocket类 Socket client = null; // 表示客 户端 server = new ServerSocket(8889); // 服务器在8888端口上监听 boolean f = true; // 定义个标记位 while (f) { System.out.println("服务器运行,等待客户端连接。"); // 得到连接,程序进入到阻塞状态 client = server.accept(); // 每一个客户端表示一个线程 new Thread(new EchoThread(client)).start(); } server.close(); } }
客户端:
package com.iflytek.socket; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; /** * @author xudongwang 2012-1-9 * * Email:xdwangiflytek@gmail.com */ public class EchoClient { public static void main(String args[]) throws Exception { Socket client = null; // 表示客 户端 client = new Socket("localhost", 8889); BufferedReader buf = null; // 一次性接收完成 PrintStream out = null; // 发送数据 BufferedReader input = null; // 接收键盘数据 input = new BufferedReader(new InputStreamReader(System.in)); buf = new BufferedReader(new InputStreamReader(client.getInputStream())); out = new PrintStream(client.getOutputStream()); boolean flag = true; // 定义标志位 while (flag) { System.out.print("输入信息:"); String str = input.readLine(); // 接收键盘的输入信息 out.println(str); if ("bye".equals(str)) { flag = false; } else { String echo = buf.readLine(); // 接收返回结果 System.out.println(echo); // 输出回应信息 } } buf.close(); client.close(); } }
发表评论
-
log4j xml配置详解
2014-06-18 10:37 1135<?xml version="1.0&qu ... -
test
2013-07-29 09:16 0private static CacheImpl insta ... -
多文件上传 by MultipartFile and Multiple
2012-12-03 09:13 14350最近的一个项目中,需要用到 ... -
布局框架-SiteMesh
2012-11-30 08:57 2589最近在一个项目中使用 ... -
Servlet
2012-12-07 08:36 1546一、认识 Servlet : ... -
连接池
2012-12-10 08:42 1445... -
忆Java String
2012-11-15 08:38 1266平时 .NET 写多了, Java ... -
Eclipse中右键快速定位文件资源的工具
2012-11-09 08:43 2009当你开发.NET项目后,使用VS习惯了再来使用Java和Ecl ... -
Java中MessageFormat对象实现格式化字符串输出,类似C#中的string.format方法
2012-09-29 11:39 3667平时.NET做多了,再做Java时,总会进行一些比较,比如说J ... -
byte[]与InputStream互转
2012-09-29 11:39 1578InputStream转byte[] private ... -
统一中英文长度问题
2012-07-20 00:17 1937最近因为在做一个项目要求很多都是英文,所以这就涉及到在页 ... -
Java中Process的waitFor()阻塞问题
2012-07-21 01:00 8937在做视频转换时,调用外部的 exe 去进行一些视频 ... -
Tomcat注册成系统服务
2012-07-17 00:00 1563为了部署项目后不出现黑色的 doc 命令框,所以很 ... -
urlrewrite实现伪静态化
2012-07-25 00:41 3216产生背景 静态网页与动态网页比较: ... -
Java中java.util.Date时间和java.sql.Date时间的相互转化
2012-01-30 22:49 2957刚刚写用 JS 禁用退格键时( http ... -
使用BeanUtils类简化request和resultset转换
2012-01-21 20:23 2967当提交表单时,如果没有使用Struts等框架的话,你的代 ... -
JDBC的多条件动态查询
2012-01-19 11:05 7185前面我已经提到了现在的项目无非就是列表里的分页加多条件查 ... -
JDBC分页
2012-01-19 10:15 5523不知道大家做项目做到最后有什么感觉没有,其实大家做来做去 ... -
Java农历(阴历)工具类
2012-01-20 11:30 2355在真实的项目开发中会可能会遇到项目需要对阴历即我们所说的农历节 ... -
Eclipse中java项目引用dll库的路径设置(System.loadLibrary()调用Dll路径问题)
2012-01-16 14:13 4269右击项目名|选择属性properties|在左边列表内选择“J ...
相关推荐
### 基于TCP的Socket编程在VC中的应用与实现 #### 一、知识点概览 在VC(Visual C++)环境下进行网络编程时,基于TCP的socket编程是实现客户端与服务器之间通信的重要方式之一。本文将从初始化、创建socket、绑定...
"基于TCP/IP的socket编程"是一个深入探讨如何使用socket接口进行网络通信的主题。Socket编程允许应用程序通过网络发送和接收数据,它是互联网上不同计算机之间交互的核心机制。 在给定的描述中,我们看到一个创新的...
压缩包文件"TCPSocket"可能包含了示例代码,这些代码可以帮助初学者更好地理解TCP Socket编程的实践。通过阅读和运行这些代码,你可以学习如何在Python、C++、Java等语言中实现TCP Socket客户端和服务端。 在编程...
本教程旨在帮助初学者理解TCP Socket编程的基本概念,并通过简单的实例演示如何实现客户端与服务器端的交互。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它确保...
总结起来,基于TCP的Socket编程是构建网络应用的基础,涉及网络连接的建立、数据的可靠传输和通信链路的维护。通过`File_client.java`和`File_server.java`这两个文件,我们可以学习到如何在Java中实现TCP服务器和...
总结,C#中的TCP Socket编程涉及到TcpListener和TcpClient类的使用,以及异步编程和异常处理。通过这些技术,可以构建可靠的网络通信系统,实现客户端和服务端的数据交换。在实际项目中,还需要考虑性能优化、错误...
《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket编程作了深入浅出的介绍。《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程...
本教程主要面向Linux环境下的初学者,旨在介绍如何进行简单的TCP Socket编程,同时包含一个判断机器字节序(大端或小端)的代码。 首先,TCP是一种面向连接的、可靠的传输协议,它确保数据包按顺序无损地送达目标。...
TCPSocket编程是网络编程中的一个关键领域,它涉及到如何在不同计算机之间建立可靠的、基于TCP/IP协议的数据传输。在本文中,我们将深入探讨Socket的基本概念、在Windows和Linux环境下的实现、常用的Socket函数以及...
《Java TCP/IP Socket编程》(原书第2版)是一本深入探讨Java中Socket编程的专著,旨在帮助读者理解并掌握如何在Java环境中利用TCP/IP协议进行网络通信。本书不仅详细介绍了Socket的工作原理,还提供了丰富的示例...
Socket编程是实现TCP通信的一种方式,它为应用程序提供了访问网络层服务的接口。本篇文章将深入探讨基于TCP的Socket编程,包括基本概念、服务器端和客户端的实现,以及常见问题。 首先,TCP套接字(Socket)是应用...
本文将深入探讨基于TCP的Socket编程,特别是以C++为编程语言的应用。适合对网络编程感兴趣的初学者,通过学习,你可以了解如何创建、连接和管理TCP套接字。 首先,TCP是一种面向连接的传输层协议,它提供了可靠的、...
在IT行业中,网络通信是至关重要的,而C#语言提供了强大的网络编程能力,尤其是在TCP Socket编程方面。TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,常用于需要稳定数据传输的应用...
在Java中,Socket编程主要是基于TCP/IP协议的网络编程。 网络编程的两个主要问题 在网络编程中,有两个主要的问题需要解决:一是如何准确地定位网络上的一台或多台主机,二是找到主机后如何可靠高效地进行数据传输...
### Linux环境下基于TCP的Socket编程浅析 #### 摘要 本文主要探讨了Linux环境下基于TCP协议的Socket编程技术。Socket作为一种通用的进程间通信(IPC)方式,不仅适用于同一台计算机上的进程通信,也广泛应用于网络...
Socket编程是计算机网络中的一种通信接口,主要用于实现进程间的网络通信。在TCP/IP协议栈中,Socket接口提供了标准的方法让应用程序能够发送和接收数据。本实例主要关注的是基于TCP协议的Socket通信编程,这是一种...
本压缩包文件“基于TCP的SOCKET编程代码包”提供了多个关于TCP SOCKET编程的实例,适用于学习和开发网络通信应用。 首先,我们要理解SOCKET,它是网络编程中的基本接口,允许应用程序通过网络发送和接收数据。在...
在IT行业中,网络编程是不可或缺的一部分,而TCP Socket通信作为网络通信的基础,其调试工作尤为重要。标题提到的“好用的Tcp Socket调试工具”显然是一款能够帮助开发者解决TCP Socket通信问题的有效辅助软件。描述...
Java TCP/IP Socket编程是网络通信领域中的核心技术,广泛应用于服务器端和客户端之间的数据传输。本资源包含第二版书籍的相关源码,旨在帮助开发者深入理解并实践Socket编程。以下是关于Java TCP/IP Socket编程的...
在IT行业中,网络编程是至关重要的领域,而TCP(传输控制协议)的Socket编程是其中的基础。本主题将深入探讨如何使用C语言实现TCP的Socket编程,包括客户端和服务端的构建。TCP是一种面向连接的、可靠的传输协议,而...