java socket
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于java socket内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在java socket相关知识领域提供全面立体的资料补充。同时还包含 j2ee是什么、jar格式、java 的知识内容,欢迎查阅!
java socket相关知识
-
java socket 通信socketClient Android端调用方式:new MyThread().start(); //========================= 服务器================= //================================================= /** Socket 客户端*/ class MyThread extends Thread { @Override public void run() { //定义消息 Bundle bundle = new Bundle(); bundle.clear(); try { Socket socket = new Socket("106.15.39.150",65431);//阿里云服务器 IP ok System.out.println("localhost"); // 2. 获取输出流,并向服务器端发送信
-
Java Socket 编程原理及教程原文链接:http://www.codeceo.com/article/java-socket.html对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。这样就有两个Socket了,客户端和服务端各一个。对于Socket之间的通信其实很简单,服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。下面来看一些服务端与客户端通信的例子:1、客户端写服务端读服务端代码public class 
-
Java Socket 编程原理及教程原文链接对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。这样就有两个Socket了,客户端和服务端各一个。对于Socket之间的通信其实很简单,服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。下面来看一些服务端与客户端通信的例子:1、客户端写服务端读服务端代码public class Server { pu
-
Java Socket 编程原理及教程原文链接:http://www.codeceo.com/article/java-socket.html对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。这样就有两个Socket了,客户端和服务端各一个。对于Socket之间的通信其实很简单,服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。下面来看一些服务端与客户端通信的例子:1、客户端写服务端读服务端代码public class 
java socket相关课程
java socket相关教程
- 3. Java 非阻塞式 Socket 编程 介绍 Java 非阻塞式 Socket 编程,就得介绍 Java NIO。Java NIO 是 Java New IO API,有时也解释为 Java Non-blocking IO。通过 Java NIO 可以实现 Java 非阻塞 Socket 编程。Java NIO 是 Java 1.4 支持的,它将 Socket 数据流抽象为一个 Channel(管道),Socket 数据读写是通过 Channel实现的,并且提供了 Buffer 机制,提高数据读写的性能。Java NIO 通常用来编写高性能 Java 服务器程序。在 Java 1.7 以后,Java NIO 对磁盘文件处理得到了增强,可以将 Socket I/O 和 文件 I/O 融合在 Java NIO 中。Java NIO 提供的新的类结构如下:类名称功能说明ServerSocketChannel表示服务端 TCP Socket 的监听 Channel。ServerSocketChannel 提供的工厂方法 open,用于创建它的实例;同时它提供了 accept 方法用于在服务器中接收新的客户端连接请求,返回值是 SocketChannel 类的实例。SocketChannelSocketChannel 表示一个 TCP 通信 Channel,可以通过它的 open 方法创建,也可以通过 ServerSocketChannel 的 accept 方法创建。SelectorJava I/O 事件多路复用机制,用于同时监听多个 Channel 的读、写、监听事件SelectionKey用于表示具体的事件对象ByteBuffer通过 SocketChannel 进行数据读写,依赖 ByteBufferServerSocketChannel 和 SocketChannel 同时支持阻塞式和非阻塞式,默认是阻塞式。可以通过如下的方法,打开非阻塞式。// 配置监听 ServerSocketChannel 为非阻塞模式ServerSocketChannel serverChannel = ServerSocketChannel.open();serverChannel.configureBlocking(false);// 配置服务器新建立的 SocketChannel 为非阻塞模式SocketChannel newSock = serverChannel.accept();newSock.configureBlocking(false);SocketAddress serverAddr = new InetSocketAddress("127.0.0.1", PORT);SocketChannel sock = SocketChannel.open(serverAddr);// 配置客户端 SocketChannel 为非阻塞sock.configureBlocking(false);
- 3. Java Socket 类分析 Java 语言抽象了 java.net.Socket 类,表示一个 Socket,既可以用在客户端,又可以用在服务器端。其实 java.net.Socket 也是一个包装类,对外抽象了一组公共方法,具体实现是在 java.net.SocketImpl 类中完成的,它允许用户自定义具体实现。java.net.Socket 类包含的主要功能如下:创建 Socket,具体就是创建一个 java.net.Socket 类的对象。建立 TCP 连接,可以通过 java.net.Socket 类的构造方法完成,也可以调用它的 connect 方法完成。将 Socket 绑定到本地接口 IP 地址或者端口,可以调用 java.net.Socket 类的 bind 方法完成。提示:服务器需要做 bind 操作,客户端一般不需要做 bind 操作。关闭连接,可以调用 java.net.Socket 类的 close 方法完成。接收数据,可以通过 java.net.Socket 类的 getInputStream 方法,返回一个 java.io.InputStream 对象实现数据接收。发送数据,可以通过 java.net.Socket 类的 getOutputStream 方法,返回一个 java.io.OutputStream 对象实现数据发送。java.net.Socket 类提供了一组重载的构造方法,方便程序员选择,大体分为四类:可以传入服务器的 host 和 port 参数原型如下: public Socket(String host, int port) throws UnknownHostException, IOException public Socket(InetAddress address, int port) throws IOException对于 host 参数,你可以传入 IP 地址或者是域名。当然,你可以传入构造好的 InetAddress 地址结构。在 java.net.Socket 的构造方法中,首先会构造一个 InetAddress 地址结构,然后进行域名解析,最后调用它的 connect 方法和服务器建立连接。可以传入绑定的本地地址参数原型如下: public Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException public Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException这类构造方法也可以传入 host 和 port 外,功能和上面类似。另外,还可以传入 localAddr 和 localPort,会调用 java.net.Socket 类的 bind 方法,绑定在本地的接口地址和端口。无参构造方法 public Socket()此构造方法,除了构造一个 java.net.Socket 类的对象,并不会去 connect 服务器。你需要调用它的 connect 方法连接服务器。public void connect(SocketAddress endpoint, int timeout) throws IOException自己调用 connect 方法,需要构造 SocketAddress 结构,当然你可以设置连接的超时时间,单位是毫秒(milliseconds)。访问代理服务器public Socket(Proxy proxy) 当你需要访问某个代理服务器时,可以调用此构造方法,Socket 会自动去连接代理服务器。创建一个简单的 java.net.Socket 客户端,示例代码如下:import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.IOException;import java.io.OutputStream;import java.net.InetSocketAddress;import java.net.Socket;import java.net.SocketAddress;public class TCPClient { // 服务器监听的端口号 private static final int PORT = 56002; private static final int TIMEOUT = 15000; public static void main(String[] args) { Socket client = null; try { // 在构造方法中传入 host 和 port // client = new Socket("192.168.43.49", PORT); // 调用无参构造方法 client = new Socket(); // 构造服务器地址结构 SocketAddress serverAddr = new InetSocketAddress("192.168.0.101", PORT); // 连接服务器,超时时间是 15 毫秒 client.connect(serverAddr, TIMEOUT); System.out.println("Client start:" + client.getLocalSocketAddress().toString()); // 向服务器发送数据 OutputStream out = new BufferedOutputStream(client.getOutputStream()); String req = "Hello Server!\n"; out.write(req.getBytes()); // 不能忘记 flush 方法的调用 out.flush(); System.out.println("Send to server:" + req); // 接收服务器的数据 BufferedInputStream in = new BufferedInputStream(client.getInputStream()); StringBuilder inMessage = new StringBuilder(); while(true){ int c = in.read(); if (c == -1 || c == '\n') break; inMessage.append((char)c); } System.out.println("Recv from server:" + inMessage.toString()); } catch (IOException e) { e.printStackTrace(); } finally { if (client != null){ try { client.close(); } catch (IOException e) { e.printStackTrace(); } } } }}这里我们创建的是阻塞式的客户端,有几点需要注意的地方:通过 OutputStream 的对象向服务器发送完数据后,需要调用 flush 方法。BufferedInputStream 的 read 方法会阻塞线程,所以需要设计好消息边界的识别机制,示例代码是通过换行符 ‘\n’ 表示一个消息边界。java.net.Socket 的各个方法都抛出了 IOException 异常,需要捕获。注意调用 close 方法,关闭连接。
- 2. Java 字节流结构 Java 的 java.io.* 包中包含了 InputStream 和 OutputStream 两个类,是 Java 字节流 I/O 的基础类,其他具体的 Java I/O 字节流功能类都派生自这两个类。图中只列出了我们 Socket 编程中常用的 I/O 字节流类。java.net.SocketInputStream 类是 Socket 的输入流实现类,它继承了 java.io.FileInputStream 类。java.net.SocketOutputStream 类是 Socket 的输出流实现类,它继承了 java.io.FileOutputStream 类,下来我们逐一介绍这些类的基本功能。
- 5. Socket 网络通信示例 本节在电脑上通过 Java 搭建一个 Socket Server,然后手机作为 Client 来连接 Server。这个需要保证手机和电脑在同一个 Wifi 网段下。
- SOCKET 协议 Socket 是传输层协议的具体软件实现,它封装了协议底层的复杂实现方法,为开发人员提供了便利的网络连接。Socket 是网络编程的基石,像 Http 的请求,MySQL 数据库的连接等绝大部分的网络连接都是基于 Socket 实现的。
- 3. Java DatagramSocket 分析 Java 语言抽象了 java.net.DatagramSocket 类,表示一个 UDP Socket,既可以用在客户端,又可以用在服务器端。java.net.DatagramSocket 是一个包装类,对外抽象了一组方法,具体实现是在 java.net.DatagramSocketImpl 类中完成的,它允许用户自定义具体实现。java.net.DatagramSocket 类包含的主要功能如下:创建 UDP Socket,具体就是创建一个 java.net.DatagramSocket 类的对象。将 Socket 绑定到本地接口 IP 地址或者端口,可以调用 java.net.DatagramSocket 类的构造方法或 bind 方法完成。将客户端 UDP Socket 和远端 Socket 做绑定,可以通过 java.net.DatagramSocket 类的 connect 方法完成。提示:UDP 客户端调用 connect 方法,仅仅是将本地 Socket 和远端 Socket 做绑定,并不会有类似 TCP 三次握手的过程。关闭连接,可以调用 java.net.DatagramSocket 类的 close 方法完成。接收数据,可以通过 java.net.DatagramSocket 类的 receive 方法实现数据接收。发送数据,可以通过 java.net.DatagramSocket 类的 send 方法实现数据发送。java.net.Socket 类提供了一组重载的构造方法,方便程序员选择,大体分为四类:无参public DatagramSocket() throws SocketException绑定到任意可用的端口和通配符 IP 地址,比如 IPv4 的 0.0.0.0。一般用作 UDP 客户端 Socket 的创建。传入 port 参数public DatagramSocket(int port) throws SocketException绑定到由 port 指定的端口和通配符 IP 地址,比如 IPv4 的 0.0.0.0。一般用作 UDP 服务端 Socket 的创建。传入指定的 IP 和 Port 参数public DatagramSocket(SocketAddress bindaddr) throws SocketExceptionpublic DatagramSocket(int port, InetAddress laddr) throws SocketException绑定到指定的端口和指定的网络接口。如果你的主机有多个网卡,并且你指向在某个指定的网卡上收发数据,可以用此构造方法。既可以用作 UDP 客户端 Socket,也可以用作 UDP 服务端 Socket。
java socket相关搜索
-
j2ee
j2ee是什么
jar格式
java
java api
java applet
java c
java jdk
java list
java map
java script
java se
java socket
java swing
java switch
java web
java xml
java 程序设计
java 多线程
java 环境变量