tcp中傳送接收外帶資料(緊急資料)方法

2021-10-09 12:12:43 字數 2983 閱讀 9306

oob_send.c

#include

#include

#include

#include

#include

#include

#define bug_size 30

void

error_handling

(char

* message)

;int

main

(int argc,

char

* ar**)

int sock;

struct sockaddr_in recv_addr;

sock =

socket

(pf_inet, sock_stream,0)

;memset

(&recv_addr,0,

sizeof

(recv_addr));

recv_addr.sin_family = af_inet;

recv_addr.sin_addr.s_addr =

inet_addr

(ar**[1]

);recv_addr.sin_port =

htons

(atoi

(ar**[2]

));if

(connect

(sock,

(struct sockaddr*

)&recv_addr,

sizeof

(recv_addr))==

-1)write

(sock,

"123"

,strlen

("123"))

;send

(sock,

"4",

strlen

("1"

), msg_oob)

;write

(sock,

"567"

,strlen

("567"))

;send

(sock,

"890"

,strlen

("890"

), msg_oob)

;close

(sock)

;return0;

}

oob_recv.c

#include

#include

#include

#include

#include

#include

#include

#include

#define buf_size 30

void

error_handler

(char

* message)

;void

urg_handler

(int signo)

;int accept_sock;

int recv_sock;

intmain

(int argc,

char

* ar**)

act.sa_handler = urg_handler;

sigemptyset

(&act.sa_mask)

; act.sa_flags =0;

accept_sock =

socket

(pf_inet, sock_stream,0)

;memset

(&recv_addr,0,

sizeof

(recv_addr));

recv_addr.sin_family = af_inet;

recv_addr.sin_addr.s_addr =

htonl

(inaddr_any)

; recv_addr.sin_port =

htons

(atoi

(ar**[1]

));if

(bind

(accept_sock,

(struct sockaddr*

)&recv_addr,

sizeof

(recv_addr))==

-1)listen

(accept_sock,5)

; serv_len =

sizeof

(recv_addr)

; recv_sock =

accept

(accept_sock,

(struct sockaddr*

)&serv_addr,

&serv_len)

;//指定訊號由那個程序處理,因為乙個套接字可以被多個程序使用

fcntl

(recv_sock, f_setown,

getpid()

);int state =

sigaction

(sigurg,

&act,0)

;int str_len =0;

while

((str_len =

recv

(recv_sock, buf,

sizeof

(buf),0

))!=0

) buf[str_len]=0

;puts

(buf);}

close

(recv_sock)

;close

(accept_sock)

;return0;

}void

urg_handler

(int signo)

void

error_handler

(char

* message)

msg_oob模式並不會加快傳輸速度,而且每次msg_oob只能接收1個位元組,緊急訊息只是督促接收方盡快處理,所以後續的資料需要使用常規的方式讀取

TCP協議接收與傳送資料

tcp 建立連線通道 資料無限制 速度慢可靠 tcp協議傳送資料 1 建立傳送端的socket物件 這一步如果成功,就說明連線已經建立成功了。2 獲取輸出流,寫資料 3 釋放資源 public static void main string args throws ioexception tcp協議...

pyhon網路程式設計使用tcp傳送 接收資料

1 建立套接字 2 繫結本地埠 客戶端也就可以不繫結,不繫結時系統隨機開啟乙個埠 3 連線伺服器位址 4 傳送或接收伺服器資料 5 關閉套接字 tcp傳送資料例項 import socket 定義伺服器連線函式 def tcpclient to sever tcp soctet tcp soctet...

C 使用Socket傳送和接收TCP資料例項

具體程式 如下 複製 如下 using system using system.collections.generic using system.net using system.net.sockets using system.text namespace consoleapplication1 ...