Socket的常用方法。
构造方法:
1.使用构造方法 public ServerSocket(int port) 和public ServerSocket(int port,int backlog)
创建ServerSocket对象,则客户端可以使用服务器任意的IP连接到ServerSocket对象中。
2. 使用public ServeSocket(int port,int backlog,InetAddress bindAddr)构造方法中的参数bindAddr创建ServerSocket对象后,
客户端想要连接到服务端,则客户端Socket的构造方法的参数要写上与ServerSocket构造方法的参数bindAddr相同的IP地址,
不然就会出现异常。
绑定指定的Socket地址:
public void bind(SocketAddress endpoint)方法的主要作用是将ServerSocket绑定到特定的Socket地址(IP地址和端口号),
使用这个地址与客户端进行通信。如果地址为null,则系统将挑选一个临时的端口和一个有效的本地地址来绑定套接字。
SocketAddress本身是一个抽象类,代表Socket地址;而InetAdress类代表IP地址。
InetAddress构造方法:
1.public InetSocketAddress(int port)的作用是创建套接字地址,其中IP地址为通配符地址,端口号为指定值。有效端口0~65535之间;
端口号传入0代表bind操作中随机挑选空闲的端口。
2:public InetSocketAddress(String hostname,int port的作用是根据主机名和端口号创建套接字地址。
3:public InetSocketAddress(InetAddress addr,int port)的作用根据IP地址和端口号创建套接字地址。
Server.java
package com.company.s8; import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket; public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket=new ServerSocket();
serverSocket.bind(new InetSocketAddress(8888));
System.out.println("server begin accept");
serverSocket.accept();
System.out.println("server end accept");
}catch (IOException e){
e.printStackTrace();
System.out.println("catch "+System.currentTimeMillis());
}
}
}
Client.java
package com.company.s8;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
System.out.println("client request begin");
Socket socket=new Socket("localhost",8888);
System.out.println("client request end");
}catch (Exception e){
e.printStackTrace();
}
}
}
getLocalSocketAddress()获取bending的SocketAddress对象,返回此Socket绑定的端点的地址,如果尚未绑定,则返回null.
getLocalPort()方法用来获取Socket绑定到本地的端口。
package com.company.s12; import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket; public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket();
System.out.println("new ServerSocket 无参构造的端口是:"+serverSocket.getLocalPort());
//windows再dos窗口ipconfig获取
serverSocket.bind(new InetSocketAddress("192.168.0.101",8888));
System.out.println("bind方法之后的端口是:"+serverSocket.getLocalPort());
InetSocketAddress inetSocketAddress=(InetSocketAddress) serverSocket.getLocalSocketAddress();
System.out.println("inetSocketAddress.getHostName="+inetSocketAddress.getHostName());
System.out.println("inetSocketAddress.getHostString="+inetSocketAddress.getHostString());
System.out.println("inetSocketAddress.getPort="+inetSocketAddress.getPort());
serverSocket.close();
}
}
SocketAddress与InetAddress本质的区别是SocketAddress不基于任何协议。
Server.java
package com.company.s12_1; import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket; public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket();
InetAddress inetAddress=InetAddress.getByName("localhost");
InetSocketAddress inetSocketAddress=new InetSocketAddress(inetAddress,8888);
serverSocket.bind(inetSocketAddress);
System.out.println("server begin");
Socket socket=serverSocket.accept();
System.out.println("server end");
socket.close();
serverSocket.close();
}
}
Client.java
package com.company.s12_1; import java.io.IOException;
import java.net.Socket; public class Client {
public static void main(String[] args) throws IOException {
System.out.println("client begin");
Socket socket=new Socket("localhost",8888);
System.out.println("client end");
}
}
getHostName()和getHostString()方法的区别
getHostName()方法的作用是获取主机名。注意,如果地址是字面IP地址创建的,则此方法可能触发名称服务反向查找,也就是DNS服务通过IP找到域名。
getHostString()方法的作用是返回住居名或地址的字符串形式,如果它没有主机名,则返回IP地址。这样做的好处是不尝试返回查找。
package com.company.s12_2;
import java.net.InetSocketAddress;
public class Server {
public static void main(String[] args) {
InetSocketAddress inetSocketAddress1=new InetSocketAddress("192.168.0.101",80);
InetSocketAddress inetSocketAddress2=new InetSocketAddress("192.168.0.101",80);
System.out.println(inetSocketAddress1.getHostName());
System.out.println(inetSocketAddress2.getHostString());
}
}
测试结果:

Socket的常用方法。的更多相关文章
- Socket通信常用方法
使用tcp协议,链接服务器的方法 /// <summary> /// 连接使用tcp协议的服务端 /// </summary> /// <param name=" ...
- 我的Python成长之路---第七天---Python基础(22)---2016年2月27日(晴)
socket网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- Java基础学习笔记二十二 网络编程
络通信协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规则 ...
- Java网络通信协议、UDP、TCP类加载整理
网络通信协议 网络通信协议 网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Control Protocal/Internet Protoal传输控制协议/英特网互 ...
- python全栈开发 * 35 知识点汇总 * 180720
35 socket 一些常用方法 验证客户端信息 添加随机字符串 socketserver模块 一.socket模块中一些常用方法1.send和sendall的区别2.conn.getpeername ...
- python套接字编程基础
python套接字编程 目录 socket是什么 套接字的工作流程 基于tcp的套接字 基于udp的套接字 socket是什么 客户端/服务器架构(C/S架构) 服务端:提供服务的一端 客户端:请求服 ...
- java基础-day23
第11天 面向网络编程 今日内容介绍 u 网络编程概述 u UDP u TCP 第1章 网络编程概述 1.1 网络协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的 ...
- Java第三阶段学习(八:网络通信协议、UDP与TCP协议)
一.网络通信协议 1.概念: 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传 ...
- day011-网络编程
1. 网络编程概述 1.1 网络编程三要素 地址.端口.协议 1.1.1 IP地址:网络中设备的唯一标识. IPV4格式:xxx.xxx.xxx.xxx由四段数字组成,每一段数字由八位二进制数字组成 ...
随机推荐
- 化鲲为鹏,我有话说 ,鲲鹏ARM架构的优势
首先我在想为什么会用到鲲鹏,我个人认为最重要的还是要掌握自主研发的能力,打破国外关键技术的封锁.鲲鹏芯片完全是华为于自主设计内核,华为云Kunpeng服务器关键计算芯片全自研,提供产品可持续供应能力. ...
- CSS给元素清除浮动影响的方法,--最全四种方法
代码实例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- MyBatis_多表关联查询_resultMap_单个对象_N+1方式实现
mapper 层 提供 StudentMapper 和 ClazzMapper, StudentMapper 查询所有学生信息, ClazzMapper 根据编号查询班级信息. 再 StudentMa ...
- JVM内运行时数据区
JVM的基本区域: 类加载子系统 运行时数据区(内存区域) 执行引擎 运行时数据区域 方法区(Method Area) 类的所有字和方法字节码,以及一些特殊方法如构造函数,接口代码也在这里定义.简单来 ...
- BZOJ1500 [NOI2005]维修数列(Splay tree)
[Submit][Status][Discuss] Description 请写一个程序,要求维护一个数列,支持以下 6 种操作: 请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格 Inp ...
- java之方法的参数传递(值传递和引用传递)
方法,必须有其所在类或对象调用时才有意义,若方法有参数: 形参:方法声明时的参数: 实参:方法调用时实际传给形参的参数值: java的实参如何传入方法呢? 首先要明确:变量分为两大类:基础数据类型.引 ...
- Python爬虫根据关键词爬取知网论文摘要并保存到数据库中【入门必学】
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:崩坏的芝麻 由于实验室需要一些语料做研究,语料要求是知网上的论文摘要 ...
- 手把手教你打造一款轻量级canvas渲染引擎
背景 当我们开发一个canvas应用的时候,出于效率的考量,免不了要选择一个渲染引擎(比如PixiJS)或者更强大一点的游戏引擎(比如Cocos Creator.Layabox). 渲染引擎通常会有S ...
- 4个点说清楚Java中synchronized和volatile的区别
作者 : Hollis 回顾一下两个关键字:synchronized和volatile 1.Java语言为了解决并发编程中存在的原子性.可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如sy ...
- [JZOJ A组]球 题解
球(ball) [问题描述] 小 T 有 n 个桶和 2n − 1 个球,其中第 i 个桶能装前 2i − 1 个球.每个桶只能装一个球. 现在小 T 取了 m 个桶和 m 个球,并将这些球各自放在 ...