跟tcp一樣,網上這類的例子太多了,我這裡綜合了一下,寫成乙個通用型的,linux下跟windows下都能用。
如果是查資料看到這裡,我再重講一遍udp,如果講得不好,請見諒。
udp跟tcp相比,少了乙個建立連線的過程,所以在server服務中,只需socket,返回乙個socket控制代碼,然後bind繫結本機ip(一般是本機),後面就是收發資料了。還有需要明白乙個概念,由於不像tcp一樣有連線,這裡udp其實就沒有服務端跟客戶端的概念了,這裡為了方便,所以就叫做服務端跟客戶端。
在客戶端中,就只需要socket返回乙個控制代碼就可以了,拿這個控制代碼,就可以跟服務端通訊了。
下面是一段**:
把需要用到的標頭檔案放到乙個檔案中(myudp.h),養成好習慣
#pragma once
#include #include using namespace std;
#ifndef windows //預先定義巨集windows,在windows vs下專案右鍵,屬性裡面新增
#include#include#include#include#include#include#include//close()
#include//struct sockaddr_in
#include//inet_ntoa
#else
#include #include #pragma comment(lib, "ws2_32.lib")
#endif
server服務端:
1.初始化 //windows下必要,linux下沒有
2.socket //注意第二個引數是sock_dgram
3.bind //繫結本機監聽埠
4.sendto和recvform //收發資料
#include "udpserver.h"
#ifndef windows
int m_sock; //linux下套接字型別
#else
socket m_sock; //windows下套接字型別
#endif
int init_socket(const char *address, int port)
sockaddr_in myserveraddr;
myserveraddr.sin_family = af_inet;
myserveraddr.sin_port = htons(port);
= inet_addr(address);
myserveraddr.sin_addr.s_addr = inet_addr(inaddr_any);
if (bind(m_sock, (sockaddr*)&myserveraddr, sizeof(myserveraddr)))
return 0;
}void run()
; sockaddr_in myserveraddr;
#ifndef windows
socklen_t len = sizeof(myserveraddr);
#else
int len = sizeof(myserveraddr);
#endif
while (1) }
int main()
client客戶端:
1.初始化 //windows下必要,linux沒有
2.socket
3.收發資料
#include "udpclient.h"
#ifndef windows
int m_sock; //linux下套接字型別
#else
socket m_sock; //windows下套接字型別
#endif
sockaddr_in myclientaddr;
int init_socket(const char *address, int port)
myclientaddr.sin_family = af_inet;
myclientaddr.sin_port = htons(port);
= inet_addr(address);
myclientaddr.sin_addr.s_addr = inet_addr(inaddr_any);
return 0;
}void sendmsg(const char *msg, int length);
//if (recvfrom(m_sock, buf, sizeof(buf), 0, (sockaddr*)&myclientaddr, &len) < 0)
//perror("recvfrom failed");
}int main()
這樣乙個udp客戶端跟服務端就建立起來了。。
程式設計原理 跨平台
程式設計原理 所謂的跨平台是指程式可以不經處理就在不同平台上執行。而 平台 一詞有很多定義,在本 書中是指作業系統與硬體 處理器 的組合。用編譯型語言寫出來的程式,必須先編譯成機器碼。而機器碼是與底下的平台息息相關的,所 以 用編譯型語言寫出來的程式,無法跨平台 也就是說,無法在不同的平台上執行 解...
跨平台UNICODE程式設計總結
這段時間在架構整個伺服器,雖然前段時間受到了5.12汶川8.0級大 的影響 深切悼念在此次大 中遇難的同胞們 但是,我的工作還是在不斷地向前推進著。為了讓我們的伺服器能夠跨平台 主要是windows與linux 且能支援世界上的各種語言,我寫了乙個跨平台的且支援unicode的庫。其實,我在之前也有...
跨平台 Windows Linux 網路程式設計
一 網路程式設計在windows下和linux下的區別 專案windows linux 主要標頭檔案 winsock.h winsock2.h sys socket.h fcntl.h errno.h等 鏈結庫ws2 32.dll lib 連線是使用引數 lstdc 執行時需要libstdc so....