socket编程学习step2

引言:主机之间如何相互交互呢?网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口“可以唯一标识主机中的应用进程。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程就可以利用这个标志与其他主机进行交互了。

什么是TCP/IP、UDP?

1、TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,面向连接、保证高可靠性的传输层协议。

1)TCP/IP协议存在于OS中,网络服务通过OS提供,在OS中增加支持TCP/IP的系统调用--套接字(Socket、connect、send等)

2)TCP/IP协议族包括运输层、网络层、链路层、而socket所在位置如图,socket是应用层与TCP/IP协议族通信的中间软件抽象层。

2、UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议,也是传输层协议,它是无连接的,不保证可靠的传输层协议。

Socket是什么?

1、socket套接字

socket起源于Unix,而Unix/Linux基本哲学是“一切皆文件”,都可以用“open->read/write->close“模式来操作。Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读写I/O、打开、关闭)。

说白了Socket是应用层与TCP/IP协议族通信的“中间软件抽象层“,它是一组接口

2、socket描述符

      套接字描述符其实就是一个整数,当应用程序要为因特网通信创建一个套接字(socket)时,操作系统就返回一个小整数作为描述符来标识这个套接字。从应用程序的角度看,文件描述符就是一个整数(也可以理解为指向文件的指针),可以用它来读写文件。

Socket通信流程图

建立一次连接经过三次握手:A请求数据--B应答数据--A再次确认。

终止一个连接经过四次握手:A主动关闭--B被动关闭--B主动关闭--A再次确认。

时间: 2024-11-24 14:46:33

socket编程学习step2的相关文章

Android Socket编程学习笔记

通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务. 网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接.Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定. 在java中,Socke

Socket编程学习之道:揭开Socket编程的面纱

对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问: 1.         什么是TCP/IP.UDP? 2.         Socket在哪里呢? 3.         Socket是什么呢? 4.         你会使用它们吗? 什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为

JAVA Socket 编程学习笔记(二)

在上一篇中,使用了 java Socket+Tcp/IP  协议来实现应用程序或客户端--服务器间的实时双向通信,本篇中,将使用 UDP 协议来实现 Socket 的通信. 1. 关于UDP UDP协议(用户数据报协议)是无连接的.不可靠的.无序的,速度快,进行数据传输时,首先将要传输的数据定义成数据报(Datagram),大小限制在64k,在数据报中指明数据索要达到的Socket(主机地址和端口号),然后再将数据报发送出去,Java 对UDP 协议通信提供了两个主要的类,DatagramPac

JAVA Socket 编程学习笔记(一)

1. Socket 通信简介及模型 Java Socket 可实现客户端--服务器间的双向实时通信.java.net包中定义的两个类socket和ServerSocket,分别用来实现双向连接的client和server端. 2. Socket 通信实现方法 2.1  服务器端(非多线程)  用指定的端口实例化一个SeverSocket对象.服务器就可以用这个端口监听从客户端发来的连接请求. 调用ServerSocket的accept()方法,以在等待连接期间造成阻塞,监听连接从端口上发来的连接

IOS的socket编程学习笔记

苹果的Socket编程,常用的是CFNetwork库编程,Socket编程是一个异步的过程,socket的联接方法,不是会等到连接完成后再执行下一行代码,如果你想在一个连接完全执行完之前与一个Socket完全绑定,那么就会容易得到一个意想不到的结果.     连接一台Socket服务器你需要确定两个信息,一个是Socket服务器的域名或者IP地址,另一个是服务器监听的端口号.在尝试一个新的Socket连接的时候我们最好先添加一个连接事件监听器.     CFNetwork库编程,其封装好的开源库

Java Tcp协议socket编程学习

以下是一对一的通信编程实现,后续会继续学习一个服务器监听多个客户端的实现. 我学习到的主要步骤 第一步:以特定端口(如4800)新建socket对象第二步:以系统输入设备构造BufferedReader对象,该对象用于接收系统键盘输入的字符第三步:以socket对象 得到输出流来构造PrintWriter第四步:以socket对象得到输入流来构造相应的BufferedReader对象,该对象用于接收server端发送过来的信息 我理解到的关闭socket:先开的后关闭,socket最后关闭. 以

C++的socket编程学习

前言 不得不承认作为一个前端开发,仍有一个后台开发的梦.从socket通信开始学习,在工作之余补充学习点相关知识,记录下学习的过程. PS:有园友可以推荐点相关的书籍吗? 服务端 服务器代码如下,在设置listen之后,通过accept获取对应的socket连接并创建线程进行通信,通信完成后关闭对应线程. // socket_service.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #inc

python socket编程学习笔记2

 server.py: [服务端步骤]: 1.创建socket对象 2.将socket绑定到指定地址(bind) 3.监听连接请求(listen) 4.等待客户请求(accept) 5.处理请求(服务器和客户端通过send和recv方法通信(传输 数据). 6.传输结束后关闭连接(close) client.py: [客户端步骤]: 1.创建socket对象 2.创建连接(connect) 3.处理阶段(send方法和recv方法通信) 4.关闭连接 (close)

socket编程学习

基于udp的socket udp是无连接的,那边先启动不会报错 udp的小例子: 1 from socket import * 2 ip_port=('127.0.0.1',8888) 3 buffer_size=1024 4 myudp_server=socket(AF_INET,SOCK_DGRAM) 5 myudp_server.bind(ip_port) 6 while True: 7 message,addr=myudp_server.recvfrom(buffer_size) 8 p