Java--Socket通信

下面内容是Java开发内容的高级知识点,需要对Java中的面向对象、IO、多线程、以及网络相关知识有一定的基础。(知识永远都有深度,本章节长期更新内容)

1、网络基础知识

网络通信的条件:1、两个通信的端都要有各自的IP地址作为唯一标识,简单的来说IP地址用来区分不同机器(计算机)。2、语言要相通。3、如何辨别不同程序的通信需要端口号来区别,简单的来说端口号就是用来标识不同的应用程序。

TCP/IP是目前世界上使用最广泛的协议,是以TCP和IP为基础的不同层次上多个协议的集合,也称TCP/IP协议族 或 TCP/IP 协议栈。

TCP:Transmission Control Protocol 传输控制协议
IP:Internet Protocol 互联网协议

TCP/IP模型

>>IP和端口<<
1、用于区分不同应用程序。
2、端口号范围为0~65535,其中0~1023为系统所保留。如果自定义端口号,所以建议用1024之后的端口号。
3、IP地址和端口号组成了所谓的Socket,Socket是网络上运行程序之间双向通信链路的终结点,是TCP和UDP的基础。

常用的端口号需要记一下:http:80    ftp:21    telnet:23

——————————Java中的网络支持—————————
针对网络通信的不同层次,Java提供的网络功能有四大类:
>>1、InetAddress:用于标识网络上的硬件资源
>>2、URL:统一资源定位符 通过URL可以直接读取或写入网络上的数据
>>3、Socket:使用TCP协议实现网络通信的Socket相关的类。
>>4、Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信。

2、InetAddress类

查看I-net-Address的API文档,发现没有构造方法,也就是不能通过new来创建。所以肯定有静态的方法来创建。

 1 import java.net.InetAddress;
 2 import java.net.UnknownHostException;
 3 import java.util.Arrays;
 4
 5 public class Test1{
 6     public static void main(String[] args) throws UnknownHostException{
 7         // 获取本机的InetAdresss实例
 8         InetAddress address = InetAddress.getLocalHost();
 9         System.out.println("计算机名:"+address.getHostName()+"\nIP地址:"+address.getHostAddress());
10
11         // 获取字节数组形式的IP地址
12         byte[] bytes = address.getAddress();
13         System.out.println("字节数组形式的IP:"+Arrays.toString(bytes));
14         System.out.println(address);
15
16         // 也可以通过机器名来获取InewAdress
17         InetAddress address2 = InetAddress.getByName("MacBook-Air-2.local");
18         System.out.println("通过计算机名字创建的InetAddress对象:"+address2);
19         System.out.println("计算机名:"+address2.getHostName());
20         System.out.println("IP地址:"+address2.getHostAddress());
21
22         // 也可以通过IP地址来获取InewAdress
23         InetAddress address3 = InetAddress.getByName("192.168.1.102");
24         System.out.println("通过计算机IP地址创建的InetAddress对象:"+address3);
25         System.out.println("计算机名:"+address3.getHostName());
26         System.out.println("IP地址:"+address3.getHostAddress());
27
28
29     }
30 }

输出结果:

3、URL

URL(Uniform Resource Locator)统一资源定位符,表示Internet上某一资源的地址。 俗称就是网址。

URL由两部分组成:协议名称+资源名称。

在Java.net包中,提供了URL类来表示URL。

4、TCP编程
5、UDP编程

时间: 2024-10-12 16:37:27

Java--Socket通信的相关文章

java socket通信-传输文件图片--传输图片

ClientTcpSend.java   客户端发送类 package com.yjf.test; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.net.InetSocketAddress; import java.net.Socket; public class ClientTcpSend { public static String clien

java Socket通信使用BufferedReader和BufferedWriter的注意事项

注意事项:readLine()要求有换行标识,write()要输出换行标识,要调用flush()刷新缓冲区. 以下是取自java socket通信中的一小段代码. BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.get

【Java】Java Socket 通信示例

用socket(套接字)实现客户端与服务端的通信. 这里举两个例子: 第一种是每次客户端发送一个数据,服务端就做一个应答.(也就是要轮流发) 第二种是客户端可以连续的向服务端发数据,服务端也可以连续向客户端发数据.(多线程) 为了方便起见,客户端服务端都放在一个主机上,分别开两个进程[哈哈,进程间通信lol~] PS: 一个聊天程序雏形 代码也放在GitHub上了:https://github.com/MummyDing/socketChatDemo Demo 1: 简单的Socket通信,一人

【Java】Java Socket 通信演示样例

用socket(套接字)实现client与服务端的通信. 这里举两个样例: 第一种是每次client发送一个数据,服务端就做一个应答. (也就是要轮流发) 另外一种是client能够连续的向服务端发数据,服务端也能够连续向client发数据.(多线程) 为了方便起见,client服务端都放在一个主机上.分别开两个进程[哈哈,进程间通信lol~] PS: 一个聊天程序雏形 代码也放在GitHub上了:https://github.com/MummyDing/socketChatDemo Demo

Java Socket通信实现私聊、群聊

前言 闲言少叙,上代码! 代码编写 server服务端 /** * 服务端 */ public class Server { private static ServerSocket server = null; private static Socket ss = null; /** * 客户端集合 */ private static Map<String, ServerThread> serverThreadMap = new HashMap<String, ServerThread&

java Socket通信,客户端与服务端相互发消息

1.通信过程 网络分为应用层,http.ssh.telnet就是属于这一类,建立在传输层的基础上.其实就是定义了各自的编码解码格式,分层如下: 2.Socket连接 上述通信都要先在传输层有建立连接的基础上才能完成,TCP通过三次握手建立连接:   Socket与http的区别可以看下这个: https://www.cnblogs.com/meier1205/p/5971313.html 还有搜索:http下午茶 3.JAVA socket 客户端与服务端互发消息 实现结构图:   客户端和服务

Java Socket通信介绍及可能遇到的问题解决_java - JAVA

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 前言 本文主要给大家介绍了关于Java中Socket通信的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. Java中基于TCP协议实现网络通信的两个类:客户端的Socket和服务器端的ServerSocket. Socket通信模型如图所示: 不管Socket通信的功能有多复杂,任何socket通信过程的基本结构都是一样的. 其基本步骤为: ①分别在客户端和服务器端创建Socket和Ser

java socket通信:聊天器(1)

目的:实现多个客户之间的通信 首先,这个聊天器的框架是这样的: 对于服务器端:建立socket,连接到服务器,并且开始监听. import java.io.*; import java.util.ArrayList; import java.util.List; import java.net.*; public class MultiTalkServer{ static int clientnum = 0; //创建一个arraylist数组来保存socket, public static L

170410、java Socket通信的简单例子(TCP)

服务端代码: package com.bobohe.socket; import java.io.*; import java.net.*; import java.applet.Applet; public class TalkServer { public static void main(String args[]) { try { ServerSocket server = null; try { server = new ServerSocket(4700); // 创建一个Serve

170411、java Socket通信的简单例子(UDP)

服务端代码: package com.bobohe.socket; import java.io.*; import java.net.*; class UDPServer { public static void main(String[] args) throws IOException { DatagramSocket server = new DatagramSocket(5050); byte[] recvBuf = new byte[100]; DatagramPacket recv