`
2277259257
  • 浏览: 518321 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java网络教程之Socket

 
阅读更多

当我们想要在Java中使用TCP/IP通过网络连接到服务器时,就需要创建java.net.Socket对象并连接到服务器。假如希望使用Java NIO,也可以创建Java NIO中的SocketChannel对象。

创建Socket

下面的示例代码是连接到IP地址为78.64.84.171服务器上的80端口,这台服务器就是我们的Web服务器(www.jenkov.com),而80端口就是Web服务端口。

Socket socket = new Socket("78.46.84.171", 80);

我们也可以像如下示例中使用域名代替IP地址:

Socket socket = new Socket("jenkov.com", 80);

 

Socket发送数据

要通过Socket发送数据,我们需要获取Socket的输出流(OutputStream),示例代码如下:

Socket socket = new Socket("jenkov.com", 80);
OutputStream out = socket.getOutputStream(); 

out.write("some data".getBytes());
out.flush();
out.close(); 

socket.close();

代码非常简单,但是想要通过网络将数据发送到服务器端,一定不要忘记调用flush()方法。操作系统底层的TCP/IP实现会先将数据放入一个更 大的数据缓存块中,而缓存块的大小是与TCP/IP的数据包大小相适应的。(译者注:调用flush()方法只是将数据写入操作系统缓存中,并不保证数据 会立即发送)

Socket读取数据

从Socket中读取数据,我们就需要获取Socket的输入流(InputStream),代码如下:

Socket socket = new Socket("jenkov.com", 80);
InputStream in = socket.getInputStream(); 

int data = in.read();
//... read more data... 

in.close();
socket.close();

代码也并不复杂,但需要注意的是,从Socket的输入流中读取数据并不能读取文件那样,一直调用read()方法直到返回-1为止,因为对 Socket而言,只有当服务端关闭连接时,Socket的输入流才会返回-1,而是事实上服务器并不会不停地关闭连接。假设我们想要通过一个连接发送多 个请求,那么在这种情况下关闭连接就显得非常愚蠢。

因此,从Socket的输入流中读取数据时我们必须要知道需要读取的字节数,这可以通过让服务器在数据中告知发送了多少字节来实现,也可以采用在数据末尾设置特殊字符标记的方式连实现。

关闭Socket

当使用完Socket后我们必须将Socket关闭,断开与服务器之间的连接。关闭Socket只需要调用Socket.close()方法即可,代码如下:

Socket socket = new Socket("jenkov.com", 80); 

socket.close();
分享到:
评论

相关推荐

    Java网络编程基础教程之Socket入门实例

    Java网络编程是构建分布式应用程序的关键技术之一,而Socket是其核心组件。Socket允许两个网络应用程序之间建立通信链路,通常用于客户端和服务器之间的交互。本教程将带你了解Java中Socket的基本使用,包括创建...

    JAVA Socket 经典教程

    本教程将深入探讨Java Socket编程的核心概念,以及如何利用它进行网络通信。 1. **Java Socket基础** - **Socket的概念**:Socket是网络通信中的一个端点,可以理解为两台机器间通信的桥梁。在Java中,Socket类...

    JAVA Socket 网络编程教程

    本教程将深入探讨Java Socket编程的基本概念、原理和实践应用。 一、Socket基本概念 Socket,也被称为套接字,是网络通信中的一个重要接口,它为两台计算机提供了一个低级别的、进程到进程的通信机制。在Java中,...

    Java网络编程案例教程习题参考答案 .pdf

    Java网络编程案例教程习题参考答案涵盖了Java网络编程的基础知识点,包括Socket编程、TCP/IP协议、Java Socket类、ServerSocket类、Java网络编程模型、网络编程常见问题、多线程编程、并发编程、Socket选项、网络...

    Java Socket 实用教程

    7. **TCP协议**:网络协议—Java网络编程之传输控制协议(二1).chm这部分内容可能涵盖了TCP协议的工作原理,如三次握手、四次挥手、滑动窗口等,以及如何在Java中实现TCP通信。 8. **Java的网络功能与编程**:基础...

    java socket教程java socket教程

    Java Socket教程是学习Java网络编程不可或缺的部分,它允许两台计算机通过网络进行通信。Socket在Java中被用作网络通信的基础,提供了低级别的、面向连接的、基于字节流的通信服务。本教程将深入探讨Java Socket编程...

    JAVA+Socket教程

    Java Socket教程是一个深入学习Java网络编程的重要资源,它涵盖了如何使用Java的Socket API进行客户端-服务器通信的关键概念和技术。在本文中,我们将详尽探讨Java Socket编程的基础、工作原理以及如何实现基本的...

    java socket 经典教程

    通过学习本Java Socket经典教程,开发者将掌握如何使用Java实现高效的网络通信,从而能够在各种分布式系统和互联网应用中构建可靠的客户端-服务器架构。实践是检验理论的最好方式,因此在学习过程中,不断编写和调试...

    java socket 中文教程

    它们是Java网络编程的基础,为开发者提供了创建可靠的、双向通信通道的方法。 二、建立连接 1. 创建ServerSocket:服务器端首先实例化一个ServerSocket对象,并指定监听的端口号。例如: ```java ServerSocket ...

    Java网络编程(socket---网上广播).rar_Java 网络_Socket网络编程_java socket _ja

    Java网络编程是开发分布式应用程序的关键技术之一,Socket网络编程在其中扮演着至关重要的角色。本教程将深入探讨Java中的Socket编程,特别是如何实现网上广播功能。网上广播允许一个设备向网络上的所有设备发送数据...

    达内java socket 视频教程

    在本“达内Java Socket视频教程”中,你将深入学习如何利用Socket进行进程间的网络通信。 Java Socket API包括了ServerSocket和Socket两个主要类。ServerSocket用于服务器端,它监听特定端口上的连接请求,一旦有...

    Java TCP IP Socket编程(原书第2版).

    《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket...《Java TCP/IP Socket编程(原书第2版)》适合作为Java Socket编程的入门教程,也可供从事网络相关专业的技术人员参考。

    android中java和C的socket通信demo

    本教程将详细解释如何在Android中实现Java和C的Socket通信,特别是在涉及文件描述符传递的场景下。 1. **Java Socket基础** Java中的`java.net.Socket`类提供了网络通信的能力,它允许我们在两个应用程序之间建立...

    java socket编程实例(出自《java大学教程》)

    Java套接字(Socket)编程是Java网络编程的基础,它提供了客户端与服务器之间的通信机制。在《Java大学教程》中,通常会通过实例来详细解释和演示这些概念。本实例集中,我们关注的是三个关键的Socket编程示例,旨在...

    java socket教程.

    Java Socket教程是学习Java网络编程的核心内容,它涵盖了如何通过Java API进行客户端和服务器之间的通信。Socket在计算机网络中扮演着桥梁的角色,允许两台计算机(客户端和服务器)通过TCP/IP协议交换数据。本教程...

    java网络编程

    java网络编程包括socket tcp/udp io/nio讲解 http协议 jdbc rmi java的安全框架等知识

    Java TCP/IP Socket编程

    Java TCP/IP Socket编程是Java网络编程中的重要组成部分,它提供了在网络间进行数据传输的基础机制。TCP(Transmission Control Protocol)和IP(Internet Protocol)是互联网上最基础的通信协议,而Socket则是TCP/...

    Java中SSLSocket应用教程和代码

    本教程将深入探讨Java中的SSLSocket应用,包括其基本概念、工作原理以及如何通过代码实现安全连接。 1. **SSL/TLS协议概述** SSL(Secure Sockets Layer)最初由 Netscape 设计,后来被TLS(Transport Layer ...

    IBM Java socket教程

    在IT行业中,Java Socket编程是网络编程的基础,尤其在IBM Java环境下,其特性和应用更为重要。本教程针对"IBM Java socket"进行了深入浅出的讲解,覆盖了客户端、服务器、多线程以及连接池等多个关键知识点,适合...

    利用Socket进行Java网络编程.zip_java socket _java 网络编程_java 聊天_socket jav

    本教程将详细讲解如何利用Socket进行Java网络编程,实现一个简单的网上对话聊天应用。 首先,我们需要了解Socket的基本概念。在TCP/IP协议栈中,Socket是应用层与传输层的接口,它允许应用程序通过TCP或UDP协议与...

Global site tag (gtag.js) - Google Analytics