`
zc985552943
  • 浏览: 291062 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Babe4ca6-5e6f-33aa-9078-762ee3ccfb7e
云计算--hadoop
浏览量:11871
5e98c2c1-2a82-3388-bc80-7fca0170bb12
redis解说
浏览量:27150
088014c7-4d3f-39ce-b72e-4ebe7046a134
MongoDB读书笔记
浏览量:16013
D2b74847-c860-3e26-96fe-3fa4498d6348
Maven读书笔记
浏览量:27242
688db20f-402d-3a1d-8188-d6153d6c7465
Java通信
浏览量:13679
社区版块
存档分类
最新评论

02_socket编程_Socket详解

阅读更多

1.服务器与客户端是怎样交互的?

服务器程序通过监听端口,来接收客户程序的连接请求。

ServerSocket server = new ServerSocket(8000); //监听8000端口

 ServerSocket的构造方法负责在操作系统中注册一个端口8000,并且将当前服务注册为服务器进程。接下来服务器调用accept()方法,监听着端口

Socket client = server.accept();  //等待客户端连接请求,并返回客户端的Socket

 Socket类提供了getInputStream()方法和getOutputStream()方法,分别返回输入流InputStream和输出流OutputStream对象。只需要从输入流读取,就可以接受来自对方的数据;只需要向输出流中写数据,就能向对方发送数据。

 2.构造Socket

 

//常用的构造方法
Socket(String host,int prot);
Socket(InetAddress address , int prot)
 

 

设定等待建立连接的超时时间

Socket socket = new Socket();
SocketAddress remoteAddr = new IntSocketAddress("localhost",8000); //服务器监听的端口8000
socket.connect(remoteAddr,60000); //等待建立连接超时时间1分钟

 3.获取Socket信息:

getInetAddress(); //获得远程服务器的IP地址
getPort(); //获得远程服务器的端口
getLocalAddress(); //获得客户端IP
getLocalProt();
getInputStream(); //获得输入流
getOutputStream(); //获得输出流

 4.关闭或者半关闭Socket

当客户与服务器的通信结束,应该及时关闭Socket,以释放Socket占用的资源。通常关闭这种资源类的东东,我们都会在finally里面关闭,防止出现异常,导致close()没有执行

Socket socket = null;
try{
	socket = new Socket("127.0.0.1","8000");
	//...要处理的操作...
}catch(IOException e){
	e.printStackTrace();
}finally{
	try{
		if(socket != null)
			socket.close();
	}catch(IOException e){
		e.printStackTrace();
	}
}

 Socket类提供了3个状态测试方法

isClosed(); //如果Socket已经连接到远程主机,并且还没有关闭,则返回true;否则返回false
isConnected(); //如果Socket已经连接到主机,返回true;否则返回false
isBound(); //如果Socket已经绑定本地端口,返回true;

 Socket提供了shutdownInput()和shutdownOutput(),仅仅关闭输入流和输出流,但是Socket没有关闭。在程序最后还是要关闭Socket

5.设置Socket的选项

TCP_NODELAY:表示立即发送数据

SO_RESUSEADDR:表示是否允许重用Socket所绑定的本地地址

SO_TIMEOUT:表示接受数据时的等待超时时间

SO_LINGER:表示当执行Socket的close()方法时,是否立即关闭底层的Socket

SO_SNFBUF:表示发送数据的缓冲的大小

SO_RCVBUF:表示接受数据的缓冲区的大小

SO_KEEPALIVE:表示对于长时间处于空闲状态的Socket,是否要自动把它关闭

OOBINLINE:表示是否支持发送一个字节的tcp紧急数据

  • 大小: 53.3 KB
分享到:
评论

相关推荐

    C_socket编程从入门到精通

    ### C_socket编程从入门到精通 #### 一、基础知识概览 在开始深入探讨C_socket编程之前,我们需要先了解一些基础概念和相关的类与方法。本文将重点介绍以下几个方面: 1. **IP地址操作类**:包括`IPAddress`类...

    cSharp-socket-class.zip_C# socket类_C# socket详解_C# socket 编程_c#

    本文将详细解析C#中的Socket类及其相关概念,帮助初学者理解和应用C# Socket编程。 首先,Socket是网络通信的基石,它是进程间通信(IPC)的一种形式,特别适用于跨越网络的通信。在C#中,Socket类位于System.Net....

    HP_Socket 5.71 模块+源码.rar

    《HP_Socket 5.71 模块与易语言源码详解》 在IT行业中,网络编程是不可或缺的一部分,而HP_Socket 5.71 模块则是专为易语言用户设计的一个强大网络通信工具。这个模块以其高效、稳定和易用性受到了众多开发者的喜爱...

    Linux_CAN编程详解_socketCAN_canbus_linux_linuxcan_

    本篇主要介绍Linux下的CAN总线编程,特别是通过socketCAN接口进行通信。 一、socketCAN概述 socketCAN是Linux内核提供的一种用户空间接口,用于实现对CAN总线的访问。它提供了类似TCP/IP的套接字API,使得开发者...

    多线程Java_Socket编程示例

    ### 多线程Java_Socket编程示例 #### 背景与意义 在现代软件开发尤其是网络应用领域,多线程技术与Socket编程是两个非常重要的概念和技术。多线程能够有效地利用计算机资源,提高程序运行效率;而Socket编程则是...

    C++Socket编程详解

    C++ Socket 编程详解 C++ Socket 编程是指使用 C++ 语言和_socket 编程技术来实现网络应用的开发。Socket 编程是网络编程中的一种重要技术,它允许不同的计算机之间通过网络进行通信。 OSI 七层网络模型 OSI 七层...

    C_Socket编程

    ### C语言Socket编程详解 #### 一、引言:Socket编程初探 Socket编程是网络通信的核心技术之一,尤其在互联网应用开发中占有举足轻重的地位。对于想要涉足网络编程领域的开发者而言,掌握Socket编程的基本原理与...

    php_socket基础编程

    ### PHP Socket 基础编程知识点详解 #### 标题:PHP Socket 基础编程 此标题指的是一本适合初学者了解和学习 PHP Socket 编程的基础指南。 #### 描述:一本有利于刚开始接触 PHP Socket 编程的基础教程。 这本...

    socket 编程 网络编程资料大全 给力

    网络通信协议,网络通信基础知识,socket网络编程的一些基础知识,Socket网络编程学习笔记,网络编程总结,2011-学习资料大全:java_socket编程,学习网络编程的十个步骤,socket编程入门(经典版),Unix_网络编程...

    python_socket详解

    ### Python Socket 模块详解 #### 一、网络通信基础 在深入了解 Python 的 `socket` 模块之前,我们先来回顾一下网络通信的基础概念。 ##### 1.1 Internet通信 互联网上的通信主要依赖于 IP 协议和 TCP/UDP 协议...

    Java_TCPIP_Socket编程

    ### Java_TCPIP_Socket编程 #### 第1章 简介 计算机网络是现代生活中不可或缺的一部分,它使得世界各地的人们能够通过互联网进行交流、购物、娱乐等。这一切的基础在于计算机程序能够通过网络进行通信。本章节主要...

    C#_Socket编程详细说明

    【C# Socket编程详解】 C# Socket编程是用于构建网络通信应用的重要技术,它允许开发者在C#环境中创建服务端和客户端程序,实现数据的发送和接收。Socket接口提供了低级别的网络通信功能,使得应用程序能够直接操作...

    Java_TCPIP_Socket编程(中文版)

    ### Java_TCPIP_Socket编程(中文版) #### 第1章 简介 - **计算机网络、分组报文和协议**:计算机网络是通过物理介质(如电缆或无线信号)连接起来的一组计算机,它们可以相互通信并共享资源。在网络中传输的数据...

    python_DB__SOCKET开源

    本项目主要关注于Python中的网络编程(Socket)和数据库操作(DB)两大方面。通过开源的方式,帮助开发者更好地理解和应用Python进行数据处理和网络交互。 ### 描述:Python_DB__SOCKET开源,主要针对数据的操作和...

    php socket编程实例详解

    在Web开发中,Socket编程是一种基础且强大的技术,它允许服务器和客户端之间进行低级别的通信。PHP作为一款广泛使用的服务器端脚本语言,也支持Socket编程,使得开发者能够创建高效、实时的网络应用程序。本文将通过...

    Java基础_三步学会Java_Socket编程(一)

    ### Java基础之三步学会Java Socket编程详解 #### 一、深入理解Socket概念与机制 ##### 1.1 什么是Socket? **Socket**,通常被称为“套接字”,是一种用于在网络间进行通信的方式,它主要负责描述IP地址和端口号...

    wuziqi.rar_socket_socket五子棋_wuziqi

    《基于Visual C++和Socket技术实现的五子棋游戏详解》 在计算机编程领域,五子棋是一款常见的...通过这个项目,开发者不仅可以深入理解Socket编程的基本原理,还能掌握如何在实际应用中解决并发控制、数据同步等问题。

    socket详解 socket详解 socket详解 socket详解

    Socket 编程详解 在网络编程中,Socket 是一个基本概念, plays a crucial role in building network applications. 在 C# 中,Socket 编程是通过使用 System.Net.Sockets 命名空间中的类和方法来实现的。下面,...

Global site tag (gtag.js) - Google Analytics