Advister: Quincy Wu Speaker: Chenglin Tsai Date:3/26

Slides:



Advertisements
Similar presentations
Ch5 Linux Network Programming Jianjian SONG Software Institute, Nanjing University Nov
Advertisements

1 实验二、 TCP 、 UDP 通信程序设计实验 ——TCP 通信实验 注意 bind 和 listen socket() bind() listen() accept() write() read() TCP Server read() socket() TCP Client connect()
網路程式設計 (Network Programming)
第五章 網際網路 5-1 網際網路的歷史沿革 5-2 網際網路基本運作原理 5-3 連線媒介與連線上網 5-4 網際網路上的熱門應用
计算机网络(第 6 版) 第 6 章 应用层 青岛理工大学通信与电子工程学院.
第一次上机作业说明 业务系统说明 Socket编程技术 如何分析应用层协议 应用程序结构.
马志强 软件学院501室 网络应用开发 马志强 软件学院501室
Netman Linux 的防火牆設計與應用 Netman
全球資訊網(WWW)簡介.
计算机系统安全 第10章 常用攻击手段.
TCP Session Hijack 郭军权
Socket.
基于WinSock的邮件系统 1 设计目标: 1.1 SMTP发送邮件服务器(c语言) 1.2 POP3接受邮件服务器(c语言)
计算机网络实验介绍 信息网络实验室 2017/9/13 04:55:22.
© 2000 Wind River Systems, Inc.
Core Switch 設定 Port的開啟與關閉 Virtual LAN建立 將Port指定到Virtual LAN
传输层是整个协议层次的核心,其任务是在源机器和目标机器之间提供可靠的、性价比合理的数据传输功能,并与当前所使用的物理网络完全独立
Advanced Sockets Programming
标准TCP/IP编程接口 ——Socket
教师:陈有为 TCP/IP与Internet(A) 教师:陈有为
TCP、UDP 通信实践 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
利用 ISA Server 2004 建置應用層防護機制
計中「多媒體與網路應用」短期訓練課程 FTP server 架設 (in Windows)
第 13 章 DNS 著作權所有 © 旗標出版股份有限公司.
第3讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
第12章 嵌入式系统的应用程序开发.
Socket Programming in C
網路伺服器應用 Linux Server Andres, Wen-Yuan Liao
Socket Programming.
第五章 網際網路 5-1 網際網路的歷史沿革 5-2 網際網路基本運作原理 5-3 連線媒介與連線上網 5-4 網際網路上的熱門應用
Socket 基本觀念.
Socket () and TCP client-server
TCP和UDP基本原理.
TCP/IP Protocol Suite TCP/IP協定 第二組 投影片製作by簡嘉宏 綦凱宏 林睿敏 滕孟哲.
Socket Programming.
C#程序设计 c# programming 网络编程 C#程序设计课程组.
在一定程度上 人类的思维产生于 简单个体之间的相互作用 ——Marvin Minsky.
Speaker: Kai-Jia Chang Adviser : Quincy Wu Date :
套接字API调用.
Windows 2003 server 進階介紹 麋鹿.
考试题型 填空题(30) 选择题(20) 名词解释(10) 问答题(24) 计算题(16) 附加题(30) 成绩核算:
中国科学技术大学计算机系 陈香兰(0512- ) Autumn 2010
江西财经大学信息管理学院 《组网技术》课程组
作業系統實習課(四) -檔案管理- 實驗室:720A 助教:鄧執中.
第2章 套接字网络编程基础 2.1 UNIX套接字网络编程接口的 产生与发展 2.2 套接字编程的基本概念 2.3 面向连接的套接字编程
校園網路架構介紹與資源利用 主講人:趙志宏 圖書資訊館網路通訊組.
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
Linux 文件操作——系统调用和标准 IO 库
第十三章 TCP/IP 與 Internet 網路連結技術
线程同步与异步套接字编程 主讲人:孙鑫
Web Server 王宏瑾.
Westmont College 网络应用软件 第一讲 (客户-服务器 概念, 协议端口的使用, 套接字API)
Window Socket 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
Network Application Programming(3rd Edition)
_08遍历物理网卡 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
傳輸控制協議 /互聯網協議 TCP/IP.
DQMClientDim.cxx及双光子练习
Speaker : Chang Kai-Jia Date : 2010/04/26
講員:游文志 排程系統教育訓練 後台管理系統 講員:游文志
面向非连接的 SOCKET编程 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
SOCKET( ).
2019/5/3 JAVA Socket(UDP).
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
IP Layer Basics, Firewall, VPN, and NAT
Speaker : 翁瑄伶 Advisor : 柯開維 博士 Date: 2016/07/31
第10讲 Web服务.
助教:廖啟盛 JAVA Socket(UDP) 助教:廖啟盛
Internet课程设计 教师:陈 妍 朱海萍 西安交通大学计算机系
IP Layer Basics & Firewall
第十二章 Java网络编程 1.URL编程 2.Socket网络编程 3.Datagram网络编程.
Presentation transcript:

Advister: Quincy Wu Speaker: Chenglin Tsai Date:3/26 Socket Programming Advister: Quincy Wu Speaker: Chenglin Tsai Date:3/26 2019/4/11

Socket Interface Socket是一種通訊的機制,可以開發本地或跨越網路的Client/Server系統 Socket 界面 FTP 伺服器 SSH SMTP Web 瀏覽器 TCP ports 20.21 TCP port 22 25 0…65536 TCP IP UDP Application TCP port 80 Transport Network 2019/4/11

Socket API 一個基本Socket程式會用到的Socket APIs listen()、accept() for Server bind() 為新的socket 指定local IP 及Port listen() 使socket 進入等待Client 連接要求狀態 accept() 接受Client連線要求。建立socket 欄位中的remote IP及Port connect() 向Server要求連線 read() 接收對方資料 write() 傳送資料給對方 close() 關閉Socket listen()、accept() for Server connect() for Client 2019/4/11

TCP socket TCP Server TCP Client Socket ( ) Connect ( ) Write ( ) Accept ( ) Read ( ) Listen ( ) Bind ( ) Close ( ) 等待客戶端的連線 建立連線 資料 (請求) 資料 (回應) 處理請求 2019/4/11

creat a socket int socket(int family, int type, int protocol) family AF_INET  UNIX network sockets AF_INET6  UNIX network sockets for IPv6 type SOCK_STREAM(TCP) SOCK_DGRAM(UDP) protocol : default 0 return 成功後,函式會傳回0以代表成功,若失敗即傳回-1 2019/4/11

bind() int bind(int socket, const struct socket * address, size_t address_len); socket : return value from socket function *address : struct sockaddr_in 對映於通訊端(socket)所宣告的資料結構 address_len : address length return 成功後,函式會傳回0以代表成功,若失敗即傳回-1。 2019/4/11

bind() (Cont.) bind()的功用是設定了Socket 的本機IP 跟Port 因此需要sockaddr_in* name來設定 struct sockaddr_in{ short sin_family; // 通常是AF_INET u_short sin_port; // Port number struct in_addr sin_addr // IP address char sin_zero[8] // reserved } 2019/4/11

bind() (Cont.) example server_address.sin_family = AF_INET; server_address.sin_addr.s_addr = inet_addr("127.0.0.1"); server_address.sin_port = 9000; server_len = sizeof(server_address); bind(server_sockfd, (struct sockaddr *)&server_address, server_len); 2019/4/11

connect() TCP客戶端使用connect函式來建立與TCP伺服端的連線 Client使用connect()來建立與Server的連線 int connect (int socket, const struct sockaddr *servaddr, soklen_t addrlen) ; 2019/4/11

listen() 建立一個queue以接收其他程式所送達的連線要求(request) int listen(int socket, int backlog) socket : return value from socket function Backlog : Queue length 代表所欲建立的queue大小為多少 成功後,函式會傳回0以代表成功,若失敗即傳回 -1。 2019/4/11

accept() 把Client 的資料跟Server Socket 資料組合成新的Socket int accept (int socket, struct sockaddr *cliaddr, socklen_t *addrlen) ; accept()成功後會傳回一個建立完的Socket 2019/4/11

read() & write() int read(int sockfd, char *buf, int len) socketfd:接收資料之 socket descriptor buf:儲存讀取資料 addrlen:sizeof(buf) 回傳-1 表示錯誤,否則回傳所接收之位元數 int write(int sockfd, char *buf, int len) socketfd:傳送資料之 socket descriptor buf:儲存傳送資料 回傳-1 表示錯誤,否則回傳所傳送之位元數 2019/4/11

close() 用來關閉socket,並且終止TCP連線 int close (int sockfd) ; 2019/4/11

TCP Demo Client : 10.10.59.61 Server : 10.10.59.64 http://ms11.voip.edu.tw/~chenglin/socket_programming socket_tcp_client.c socket_tcp_server.c 2019/4/11

UDP socket (IPv4) UDP伺服端 Socket ( ) 慣用埠 Bind ( ) UDP客戶端 socket ( ) recvfrom ( ) sendto ( ) 暫停直到收到客戶端的資料包 資料 (請求) 處理請求 close ( ) close ( ) 2019/4/11

UDP socket (Cont.) UDP並不會建立與伺服端的連線,而只是使用sendto函式將資料包傳送給伺服端:這函式只需目的位址為參數 而伺服端也不接受來自客戶端的連線,而是呼叫recvfrom函式,等待資料由客戶端送達,並傳回客戶端的協定位址和資料包,使伺服端傳送回應給正確客戶端。 2019/4/11

revfrom() 這兩個函式類似標準的read與write函式 recvfrom (int sockfd, void *buff, size_t nbytes, int flags, struct sockaddr *from, socklen_t *addrlen) ; 前三個參數sockfd、buff、nbytes與read及write的前三個參數相同,分別是描述子、指向讀取或寫入緩衝區的指標以及讀取或寫入的位元組收數目。 recvfrom函式會將傳送端的協定位址填入from所指用的socket位址結構,儲存在該socket位址結構中的位元組數目則會透過addrlen所指向的整數,傳回給呼叫者。 2019/4/11

revfrom() sendto (int sockfd, const void *buff, size_t nbytes, int flags, const struct sockaddr *to, socklen_t addlen) ; sendto 的to參數是socket位址結構,指定資料所要送往的協定位址, addrlen則是指定這個socket位址結構的長度 2019/4/11

UDP Demo Client : 10.10.59.61 Server : 10.10.59.64 socket_tcp_client.c socket_tcp_server.c 2019/4/11

Socket (IPV6) int socket(int family, int type, int protocol) family AF_INET  UNIX network sockets AF_INET6  UNIX network sockets for IPv6 Bind() IPv6 address.sin6_family = AF_INET6; address.sin6_addr = in6addr_any; address.sin6_port = 9734; IPv4 server_address.sin_family = AF_INET; server_address.sin_addr.s_addr = inet_addr("127.0.0.1"); server_address.sin_port = 9000; 2019/4/11

TCP demo (IPv6) 2019/4/11