- 浏览: 7933462 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
1 基本的tcp网络编程模式
首先是server端,server端用的是serversocket,
import java.net.*;
import java.io.*;
public class TCPServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(6666);
while(true) {
Socket s=ss.accept();
DataInputStream dis=new DataInputStream(s.getInputStream());
System.out.println(dis.readUTF());
dis.close();
s.close();
}
}
}
客户端
import java.net.*;
import java.io.*;
public class TCPClient {
public static void main(String[] args) throws Exception {
Socket s = new Socket("127.0.0.1", 6666);
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
Thread.sleep(30000);
dos.writeUTF("hello server!");
dos.flush();
dos.close();
s.close();
}
}
对客户端来说,是output输出流到服务端.
2 下面的程序,可以通过服务端把客户端的ip端口等输出给客户端
import java.net.*;
import java.io.*;
public class TestServer {
public static void main(String args[]) {
try {
ServerSocket s = new ServerSocket(8888);
while (true) {
Socket s1 = s.accept();
OutputStream os = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("Hello," + s1.getInetAddress() +
"port#" +s1.getPort() + " bye-bye!");
dos.close();
s1.close();
}
}catch (IOException e) {
e.printStackTrace();
System.out.println("程序运行出错:" + e);
}
}
}
客户端,则把服务端输进来的信息显示
import java.net.*;
import java.io.*;
public class TestClient {
public static void main(String args[]) {
try {
Socket s1 = new Socket("127.0.0.1", 8888);
InputStream is = s1.getInputStream();
DataInputStream dis = new DataInputStream(is);
System.out.println(dis.readUTF());
dis.close();
s1.close();
} catch (ConnectException connExc) {
connExc.printStackTrace();
System.err.println("服务器连接失败!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
3 下面的TCP则是客户跟服务端各自发送一句话给对方.
服务端:
import java.io.*;
import java.net.*;
public class TestSockServer {
public static void main(String[] args) {
InputStream in = null;
OutputStream out = null;
try {
ServerSocket ss = new ServerSocket(5888);
Socket socket = ss.accept();
in = socket.getInputStream();
out = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
DataInputStream dis = new DataInputStream(in);
String s = null;
if((s=dis.readUTF())!=null) {
System.out.println(s);
System.out.println("from: "+socket.getInetAddress());
System.out.println("Port: "+socket.getPort());
}
dos.writeUTF("hi,hello");
dis.close();
dos.close();
socket.close();
} catch (IOException e) {e.printStackTrace();}
}
}
客户端:
import java.net.*;
import java.io.*;
public class TestSockClient {
public static void main(String[] args) {
InputStream is = null; OutputStream os = null;
try {
Socket socket = new Socket("localhost",5888);
is = socket.getInputStream();
os = socket.getOutputStream();
DataInputStream dis = new DataInputStream(is);
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("hey");
String s = null;
if((s=dis.readUTF())!=null);
System.out.println(s);
dos.close();
dis.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {e.printStackTrace();}
}
}
5 UDP中,注意datagrampacket的应用,下面的是客户端发一消息给服务端的
public class TestUDPClient
{
public static void main(String args[]) throws Exception
{
byte[] buf = (new String("Hello")).getBytes();
Datagrampacket dp=new DatagramPacket(buf, buf.length,
new InetSocketAddress("127.0.0.1", 5678)
);
DatagramSocket ds = new DatagramSocket(9999);
ds.send(dp);
ds.close();
}
服务端:
import java.net.*;
public class TestUDPServer
{
public static void main(String args[]) throws Exception
{
byte buf[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
DatagramSocket ds = new DatagramSocket(5678);
while(true)
{
ds.receive(dp);
System.out.println(new String(buf,0,dp.getLength()));
}
}
}
要注意的知识点是,如果是客户端的其他类型的数据,在转换时要注意,比如下面的例子传一个长整型的到服务端:
客户端:
public class TestUDPClient
{
public static void main(String args[]) throws Exception
{
long n = 10000L;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeLong(n);
byte[] buf = baos.toByteArray();
System.out.println(buf.length);
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress("127.0.0.1", 5678)
);
DatagramSocket ds = new DatagramSocket(9999);
ds.send(dp);
ds.close();
}
}
服务端:
import java.net.*;
import java.io.*;
public class TestUDPServer
{
public static void main(String args[]) throws Exception
{
byte buf[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
DatagramSocket ds = new DatagramSocket(5678);
while(true)
{
ds.receive(dp);
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
DataInputStream dis = new DataInputStream(bais);
System.out.println(dis.readLong());
}
}
}
发表评论
-
复习:强迫线程顺序执行方式
2019-01-03 23:42 1562方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 2015前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3461info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2229import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 486https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 681public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 603https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 665https://mp.weixin.qq.com/s/KeFJ ... -
内部类小结
2018-06-06 10:25 432https://mp.weixin.qq.com/s/hErv ... -
JVM虚拟机小结1
2018-06-04 20:43 5321 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3094微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 611https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1840什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 960本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1355原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 853public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 667在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 934-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 765一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1903介绍个不错的RESTFUL MOCK的工具wiremock,地 ...
相关推荐
在Java网络编程中,我们还需要了解异常处理、套接字选项、多路复用技术如Java NIO(非阻塞I/O)以及SSL/TLS安全通信等高级主题。此外,对于B/S架构,我们通常使用Servlet、JSP和相关框架(如Spring MVC)来开发Web...
Java网络编程是软件开发中的重要组成部分,特别是在分布式系统和互联网应用中不可或缺。本文将深入探讨Java网络编程的核心概念、关键技术和实用技巧。 首先,我们来理解Java中的Socket编程。Socket在计算机网络中...
Java网络编程是编程领域中的重要组成部分,它允许程序在不同的设备之间交换信息。本文将深入讲解Java中的网络编程基础知识,帮助初学者理解并掌握这一技术。 首先,理解网络编程的本质至关重要。网络编程涉及两个或...
总结起来,这份资料包涵盖了Java网络编程的核心部分:基础的Socket编程,深入的TCP协议理解,以及高级的事务管理机制。通过学习这些内容,开发者能够熟练地构建和优化网络应用程序,处理并发和数据传输问题,同时...
Java网络编程是计算机科学中的一个重要领域,特别是在分布式系统和服务器端开发中不可或缺。这个实验报告主要涉及了两个关键概念:I/O操作和线程管理,同时包含了一个基本的聊天室代码实现,这为我们提供了理解Java...
Java网络编程是构建分布式应用程序的关键技术,而Java Socket编程则是其核心部分,允许两台计算机通过网络进行双向通信。在Java中,Socket是基于TCP/IP协议的,提供了可靠的、面向连接的数据传输服务。 首先,理解...
总结来说,这个"java网络编程基础"示例涵盖了如何创建基本的服务器和客户端应用程序,以及如何通过TCP连接进行数据交换。通过分析和学习这两个文件,初学者可以了解Java网络编程的基本概念,为进一步的网络应用开发...
总结来说,Java网络编程和分布式计算是构建现代网络应用的基础技术,它们允许开发者创建出可以协同工作的网络应用程序,并将这些程序部署在分布式环境中。掌握这些技术,能够使程序员充分利用Java语言的跨平台优势,...
总结来说,Java网络编程与分布式计算涉及的内容广泛,包括网络通信的基本原理,Java提供的相关API,以及分布式系统的设计和实现。掌握这些知识,对于成为专业的Java开发人员,尤其是从事云计算和大数据领域的开发者...
### Java网络编程精讲知识点概览 #### 一、Java网络编程基础 1. **网络编程概念**: - 网络编程是指利用计算机网络技术进行数据交换和资源共享的一种编程方式。 - Java提供了强大的网络编程支持,使得开发者能够...
总结,本Java网络编程聊天程序报告详细阐述了一个基于Java的聊天程序的设计与实现,涵盖了系统的需求分析、功能设计、特点、架构以及权限管理等方面。这样的系统为用户提供了一个安全、高效的在线交流平台,充分体现...
这个项目涵盖了多个关键知识点,包括Java编程语言、网络通信协议、多线程、游戏逻辑算法以及用户界面设计。 首先,Java编程语言是实现该项目的基础,它是一种面向对象的语言,具有丰富的类库和强大的跨平台能力,...
《Java网络高级编程》是一本专注于Java网络编程的教材,涵盖了从基础到高级的各种网络编程技术和概念。根据描述,本书共分为11章,每一章都详细介绍了网络编程中的不同知识点。以下是对本书内容的详细介绍: 在第1...
Java 网络编程实验 本实验主要涉及Java 网络编程的基础知识,包括使用InetAddress类获取主机的IP地址和主机名称,使用Socket和ServerSocket类实现C/S通信。 一、 InetAddress类 InetAddress类是Java中用于表示...
总结一下,本教程主要介绍了Java网络编程的基础知识,包括使用`ServerSocket`创建服务器,`Socket`建立客户端连接,以及如何通过输入输出流进行数据交换。同时,也提到了使用Swing创建简单GUI的方法。继续深入实践,...
总结来说,Java网络编程包括了对UDP和TCP协议的支持,通过Socket API可以实现客户端和服务器之间的通信。无论是简单聊天软件还是复杂的分布式系统,理解并熟练掌握这些基础知识都是至关重要的。
总结来说,Java网络编程中的端口扫描器通过Socket类实现了对目标IP的端口探测,结合多线程技术提高了扫描效率。然而,使用此类工具时,我们必须意识到可能涉及的法律和道德问题,合理合法地使用这些技术。
根据提供的文件信息,“Java网络高级编程4.pdf”主要聚焦于Java网络编程的高级技术与实践。虽然提供的部分内容并未包含实际的技术细节,但从标题、描述以及标签来看,我们可以合理推测这本书涵盖了Java在网络编程...