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紧急数据
相关推荐
### C_socket编程从入门到精通 #### 一、基础知识概览 在开始深入探讨C_socket编程之前,我们需要先了解一些基础概念和相关的类与方法。本文将重点介绍以下几个方面: 1. **IP地址操作类**:包括`IPAddress`类...
本文将详细解析C#中的Socket类及其相关概念,帮助初学者理解和应用C# Socket编程。 首先,Socket是网络通信的基石,它是进程间通信(IPC)的一种形式,特别适用于跨越网络的通信。在C#中,Socket类位于System.Net....
《HP_Socket 5.71 模块与易语言源码详解》 在IT行业中,网络编程是不可或缺的一部分,而HP_Socket 5.71 模块则是专为易语言用户设计的一个强大网络通信工具。这个模块以其高效、稳定和易用性受到了众多开发者的喜爱...
本篇主要介绍Linux下的CAN总线编程,特别是通过socketCAN接口进行通信。 一、socketCAN概述 socketCAN是Linux内核提供的一种用户空间接口,用于实现对CAN总线的访问。它提供了类似TCP/IP的套接字API,使得开发者...
### 多线程Java_Socket编程示例 #### 背景与意义 在现代软件开发尤其是网络应用领域,多线程技术与Socket编程是两个非常重要的概念和技术。多线程能够有效地利用计算机资源,提高程序运行效率;而Socket编程则是...
C++ Socket 编程详解 C++ Socket 编程是指使用 C++ 语言和_socket 编程技术来实现网络应用的开发。Socket 编程是网络编程中的一种重要技术,它允许不同的计算机之间通过网络进行通信。 OSI 七层网络模型 OSI 七层...
### C语言Socket编程详解 #### 一、引言:Socket编程初探 Socket编程是网络通信的核心技术之一,尤其在互联网应用开发中占有举足轻重的地位。对于想要涉足网络编程领域的开发者而言,掌握Socket编程的基本原理与...
### PHP Socket 基础编程知识点详解 #### 标题:PHP Socket 基础编程 此标题指的是一本适合初学者了解和学习 PHP Socket 编程的基础指南。 #### 描述:一本有利于刚开始接触 PHP Socket 编程的基础教程。 这本...
网络通信协议,网络通信基础知识,socket网络编程的一些基础知识,Socket网络编程学习笔记,网络编程总结,2011-学习资料大全:java_socket编程,学习网络编程的十个步骤,socket编程入门(经典版),Unix_网络编程...
### Python Socket 模块详解 #### 一、网络通信基础 在深入了解 Python 的 `socket` 模块之前,我们先来回顾一下网络通信的基础概念。 ##### 1.1 Internet通信 互联网上的通信主要依赖于 IP 协议和 TCP/UDP 协议...
### Java_TCPIP_Socket编程 #### 第1章 简介 计算机网络是现代生活中不可或缺的一部分,它使得世界各地的人们能够通过互联网进行交流、购物、娱乐等。这一切的基础在于计算机程序能够通过网络进行通信。本章节主要...
【C# Socket编程详解】 C# Socket编程是用于构建网络通信应用的重要技术,它允许开发者在C#环境中创建服务端和客户端程序,实现数据的发送和接收。Socket接口提供了低级别的网络通信功能,使得应用程序能够直接操作...
### Java_TCPIP_Socket编程(中文版) #### 第1章 简介 - **计算机网络、分组报文和协议**:计算机网络是通过物理介质(如电缆或无线信号)连接起来的一组计算机,它们可以相互通信并共享资源。在网络中传输的数据...
本项目主要关注于Python中的网络编程(Socket)和数据库操作(DB)两大方面。通过开源的方式,帮助开发者更好地理解和应用Python进行数据处理和网络交互。 ### 描述:Python_DB__SOCKET开源,主要针对数据的操作和...
在Web开发中,Socket编程是一种基础且强大的技术,它允许服务器和客户端之间进行低级别的通信。PHP作为一款广泛使用的服务器端脚本语言,也支持Socket编程,使得开发者能够创建高效、实时的网络应用程序。本文将通过...
### Java基础之三步学会Java Socket编程详解 #### 一、深入理解Socket概念与机制 ##### 1.1 什么是Socket? **Socket**,通常被称为“套接字”,是一种用于在网络间进行通信的方式,它主要负责描述IP地址和端口号...
《基于Visual C++和Socket技术实现的五子棋游戏详解》 在计算机编程领域,五子棋是一款常见的...通过这个项目,开发者不仅可以深入理解Socket编程的基本原理,还能掌握如何在实际应用中解决并发控制、数据同步等问题。
Socket 编程详解 在网络编程中,Socket 是一个基本概念, plays a crucial role in building network applications. 在 C# 中,Socket 编程是通过使用 System.Net.Sockets 命名空间中的类和方法来实现的。下面,...