linux下c語言udp連線例項

2021-07-15 00:25:13 字數 2370 閱讀 8088

//

// created by 冰糖葫蘆的夏天 on 16-7-15.

// server_udp.c

#include

#include

#include

#include

#define listenport 12345 //定義監聽埠號

#define listenip "127.0.0.1" //定義監聽ip位址

int main()

printf("[+] udp監聽埠: %d\n", listenport);

printf("[+] udp監聽ip: %s\n", listenip);

memset(&addr_server, 0, sizeof(addr_server)); //清空服務端套接字

memset(&addr_client, 0, sizeof(addr_client)); //清空客戶端套接字

addr_server.sin_family = af_inet; //設定位址型別

addr_server.sin_port = htons(listenport); //設定服務端監聽埠

addr_server.sin_addr.s_addr = inet_addr(listenip); //設定服務端監聽ip位址

addr_client_len = sizeof(addr_client); //計算客戶端結構體大小

if (0 == bind(mysock, (const

struct sockaddr *) &addr_server, sizeof(addr_server)))

else

while (1)

return0;}

------------------------我是分割線--------------------------

//// created by 冰糖葫蘆的夏天 on 16-7-15.

//client_udp.c

#include

#include

#include

#include

#define remoteip "127.0.0.1" //要傳送的ip位址

#define remoteport 12345 //要傳送的埠

int main()

addr.sin_family = af_inet; //結構體中填入位址型別

addr.sin_port = htons(remoteport); //結構體中填入要傳送到的埠

addr.sin_addr.s_addr = inet_addr(remoteip); //結構體中填入要傳送到ip位址

while (1)

}return0;}

/*注:在recvfrom函式中

int recvfrom(int s, void *buf, int len, unsigned int flags, struct sockaddr *from,int *fromlen)

s: 建立的socket編號

buf: 接收到的資訊儲存在哪塊記憶體裡

len: 儲存接收資訊的記憶體的大小,通過sizeof()獲取

flags: 一般設定為0,可選引數為: msg_oob: 傳出的資料以out-of-band送出

msg_dontroute: 取消路由表查詢

msg_dontwait: 設定為不可阻斷

msg_nosignal: 此傳輸不願被sigpipe訊號中斷

fromlen: 上面這個結構體的大小,通過sizeof獲取,注意:sizeof獲取到的是int,需要先賦乙個變數,然後對這個變數取位址

也可以在recvfrom函式的sockaddr裡填null,此時第5個引數將被忽略,不會出現bad address錯誤,但是,將無法顯示資料**位址與埠

*/

Linux下的UDP連線程式設計

udp是無連線不可靠的ip協議,和tcp有所不同。udp伺服器呼叫socket bind listen 完成套接字初始化後,呼叫accept 阻塞等待處於監聽埠的狀態。udp客戶端呼叫socket 初始化後,呼叫connect 傳送syn欄位並阻塞等待應答。客戶端如果一直與服務端連線,服務端退出後重...

linux下C語言連線mysql

linux下c語言連線mysql include include include mysql mysql void doquery m res mysql store result mysql if m res null while m field mysql fetch field m res i...

Linux下C語言連線MySQL

include include include int main if mysql query mysql,select from test num fields mysql num fields result while row mysql fetch row result for i 0 i編譯...