當前位置:首頁 » 編程軟體 » windows套接字編程

windows套接字編程

發布時間: 2022-11-22 13:19:50

Ⅰ 在windows下用C語言如何實現socket網路編程,需要用到哪些頭文件或者庫

需要用到的頭文件包含:

#include <winsock2.h>

#include <windows.h>

與Linux環境下socket編程相比,windows環境多了一個步驟:啟動或者初始化winsock庫

Winsock,一種標准API,一種網路編程介面,用於兩個或多個應用程序(或進程)之間通過網路進行數據通信。具有兩個版本:

Winsock 1:

Windows CE平台支持。

頭文件:WinSock.h

庫:wsock32.lib

Winsock 2:

部分平台如Windows CE貌似不支持。通過前綴WSA可以區別於Winsock 1版本。個別函數如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都屬於Winsock 1.1規范的函數;

頭文件:WinSock2.h

庫:ws2_32.lib

mswsock.h用於編程擴展,使用時必須鏈接mswsock.dll

(1)windows套接字編程擴展閱讀

winsock庫的載入與卸載:

載入:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);

載入成功,返回值為0。

WORD wVersionRequested:載入的winsock版本,使用宏MAKEWORD(x, y),x表示高位元組,y表示低位元組。然而使用時MAKEWORD(2, 2)。高位元組與低位元組相同~~

LPWSADATA lpWSAData:WSADATA結構的指針,傳入參數後,系統幫助我們填充版本信息。有興趣的可以看看結構體內容,不過基本用不著。

卸載:int WSACleanup(void);比起載入,卸載的函數真是輕松愉快。

Ⅱ 編程有哪幾種~

網路編程 通過使用套接字來達到進程間通信目的編程就是網路編程。
代碼,開發工具,資料庫,伺服器架設和網頁設計這5部分你都要接觸
代碼分靜態代碼和動態代碼
靜態代碼是伺服器不解析直接發送給客戶端的部分,用做布局效果,一般不用於資料庫操作
靜態代碼分html,javascript,css等,其中html語言是基礎,要學網路編程就先學html語言.javascript用於實現某些特效,css是樣式語言.這3個語言組合起來,可以設計出美妙的網頁效果
動態代碼是伺服器需要解析的部分,用作資料庫連接操作等.有php,jsp,asp和asp.net.這幾種語言你只用先學一種就可.如果是想快速入門,建議先學asp,如果想學了找工作等,建議學php或jsp,
開發工具有很多種,我推薦一種,網路3劍客,其中dw是開發代碼的,fw是做圖的.flash是做動畫的.
資料庫要結合你學的動態語言來選擇,asp和asp.net系列的,你可以使用access,大型點使用mssql.
php和mysql是很好的搭檔.
伺服器架設也是結合你學的動態語言的,windows下安裝iis很方便,iis可以運行asp,安裝.net框架後能運行asp.net.這兩者架設相對簡單,也是我推薦你入門學asp的原因.php一般安裝apache伺服器,jsp一般安裝tomat伺服器.只有架設好伺服器,才能瀏覽動態語言編寫的程序.
雖然是編程,但是總會涉及到網頁設計部分,還是要去學學怎麼簡單的作圖和動畫。

而Windows編程主要是 c/c++,basic,pascald等

Ⅲ 請比較Linux與Windows在網路編程方面的特點

找了一段,大致涉及到了您的問題:

一、socket的模式
socket一般有兩種模式:同步和非同步(windows網路編程技術中也可叫鎖定和非鎖定,Linux網路編程叫阻塞和非阻塞)。

二、socket的類型

socket一般有三種類型,基於TCP的流式套接字,基於UDP的數據報套接字和原始套接字。

三、socket的IO模型

socket
的IO模型是編程中使用socket兩種模式的策略,它們適用的場合不同,在不同的操作系統上支持的模型也不同,例如windows從NT版本才開始支持
完成埠模型。Linux和Windows所支持的模型也有區別,當然也有相同的地方,可能叫法不一樣,但大致思路是一樣的,下面分別介紹windows
和Linux的IO模型

1、 Windows下的套接字IO模型:

A、 Select(選擇)模型
用於同步socket的狀態檢測模型,又叫(Linux)多路復用,可以同時檢測多個socket的狀態

B、 WSAAsyncSelect(非同步選擇)模型
用於非同步socket的非同步事件設置,它是基於Windows消息的模型,必須先打開一個窗口,然後把窗口和socket的消息綁定,這樣,在socket有消息通知時,操作系統便通知窗口,然後在窗口進行處理。

C、 WSAEventSelect(非同步事件)模型

於非同步socket的非同步事件,它是基於網路事件的模型,先使用CreateEvent創建一個事件,然後使用WSAEventSelect進行事件綁
定,然後可以使用WaitForMultipleObject(Event)進行事件監聽,可以同時監聽多個事件,不光是socket的,比如可以監聽使
用CreateWaitableTimer創建的Timer等。

D、 重疊IO模型

於非同步socket,在創建socket時需要在創建函數WSASocket中使用WSA_FLAG_OVERLAPPED標志,然後在投遞IO請求的時
候將一個Overlapped結構體指針賦給投遞函數,可以使用WSAWaitForMultipleObject來監聽事件,然後使用
WSAGetOverlappedResult來獲取IO的狀態,也可以在Overlapped結構體中使用完成常式來處理,即在投遞函數中把完成常式賦
給投遞函數。

E、 完成埠模型

是迄今為止最復雜的一種IO模型,當應用程序需要管理眾多的套接字並且希望隨著系統內安裝的CPU數目的增多,應用程序的性能也可以線性增加,就可以使用
這種模型,它的原理是每個CPU可以單獨負責一個線程的執行,避免線程的頻繁切換。使用這種模型往往可以達到最佳的系統性能。

先需要使用CreateIOCompletePort來創建完成埠,然後將IO句柄和此埠綁定,綁定也是使用此函數,當然也可以一次完成。接著是創建
工作者線程,工作者線程會使用GetQueuedCompletionStatus進入完成埠維護的線程池,當有完成事件時,會激活一個線程。

2、 Linux下的IO模型

A、阻塞IO

B、非阻塞IO

C、IO多路復用(選擇)

D、信號驅動
用於非同步socket,首先設定信號處理函數,然後使用fcntl函數設定socket的擁有者,像windows下使用WSAAsncSelect設定socket的窗口一樣。使用這種模型,當內核操作可以被操作的時候通知我們的應用程序

E、非同步IO
當內核在所有操作完成後才會通知應用程序

四、socket的一些使用上的優化

A、緩沖區的優化,可以考慮讓應用程序使用比較小的緩沖區,但同時使用多個WSARecv

B、使用socket選項SO_SNDBUF和SO_RCVBUF設置socket緩沖區大小,如果設為0,操作體系統會使用應用程序的緩沖區,這樣避免了從系統緩沖區向用戶區復制的開銷

五、注意這些IO模型有些不光是針對socket的,其他的IO操作也可以使用,最常用使用的是WriteFile,ReadFile等函數。

其它查考網址:
http://blog.163.com/tianle_han/blog/static/6617826200821522743948/
http://blog.csdn.net/yibulianhua/article/details/5374317

Ⅳ 套接字是什麼

套接字(socket)是一個抽象層,應用程序可以通過它發送或接收數據,可對其進行像對文件一樣的打開、讀寫和關閉等操作。套接字允許應用程序將I/O插入到網路中,並與網路中的其他應用程序進行通信。網路套接字是IP地址與埠的組合。

總之,套接字Socket=(IP地址:埠號),套接字的表示方法是點分十進制的IP地址後面寫上埠號,中間用冒號或逗號隔開。每一個傳輸層連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定。

(4)windows套接字編程擴展閱讀

Socket最初是加利福尼亞大學Berkeley分校為Unix系統開發的網路通信介面。後來隨著TCP/IP網路的發展,Socket成為最為通用的應用程序介面,也是在Internet上進行應用開發最為通用的API。

Windows系統流行起來之後,由Microsoft聯合了其他幾家公司在Berkeley Sockets的基礎之上進行了擴充,共同制定了一套Windows下的網路編程介面,即Windows Sockets規范。

Windows Sockets規范是一套開放的、支持多種協議的Windows下的網路編程介面,包括1.1版和2.0版兩個版本。

參考資料來源:網路-套接字

Ⅳ 請教套接字是什麼概念,怎樣用

套接字(socket)一組進程間交換數據的協議,側重於函數的定義形式,而不是具體的實現方式或者數據格式,主要是為了讓c的代碼可以在不同的系統上保持源代碼級的兼容性。最初用在unix系統中。套接字也有很多不同的實現版本,稍有差異,不過對於我們在windows平台上工作的人來說,unix各種平台間的差異我們並不關心。
我們現在經常把套接字用於網路通訊編程,並且通常構造在tcp/ip協議上。在windows系統上套接字還可以使用其他協議比如ipx,甚至你可以實現一個擴展通過磁碟文件在進程間交換數據。
微軟,把套接字作了進一步的擴展,主要是做了非同步套接字的擴展,以便更好的利用windows的特性。

Ⅵ windows開發函數前面的wsa是什麼意思

1 WSA是什麼?
WSA可以是 Windows Socket API的簡稱。
另外,WSA用於Windows網路Socket的API函數的前綴, 它的全稱是Windows Sockets Asynchronous, 即Windows非同步套接字。

2 Socket是什麼?
指伯克利套接字(Berkeley sockets,也稱為BSD Socket), Socket是進程間進行通信常用方法,BSD Socket作為API,允許不同主機或者同一個計算機上的不同進程之間的通信,是用C語言編寫的函數庫。

3 Windows Socket 是什麼?
Windows Socket 遵守BSD UNIX 中流行的Socket 介面為範例, 同時含了一組針對Windows 的擴展庫函數,以使程序員能充分地利用Windows 消息驅動機制進行編程。

4 Windows Sockets Asynchronous 又是什麼?
微軟做完BSD Socket的Windows化後,就有了一個標準的Berkely Sockets的應用集合,以及為Windows應用所作的擴充。又把Windows消息機制和網路事件的非同步機制結合, 就得到了Windows Sockets Asynchronous。 凡是做了此類擴充的API函數,都加上了WSA前綴。 這樣socket就完全和Windows有機結合啦,

熱點內容
app什麼情況下找不到伺服器 發布:2025-05-12 15:46:25 瀏覽:714
php跳過if 發布:2025-05-12 15:34:29 瀏覽:467
不定時演算法 發布:2025-05-12 15:30:16 瀏覽:131
c語言延時1ms程序 發布:2025-05-12 15:01:30 瀏覽:166
動物園靈長類動物配置什麼植物 發布:2025-05-12 14:49:59 瀏覽:737
wifi密碼設置什麼好 發布:2025-05-12 14:49:17 瀏覽:149
三位數乘兩位數速演算法 發布:2025-05-12 13:05:48 瀏覽:399
暴風影音緩存在哪裡 發布:2025-05-12 12:42:03 瀏覽:545
access資料庫exe 發布:2025-05-12 12:39:04 瀏覽:632
五開的配置是什麼 發布:2025-05-12 12:36:37 瀏覽:367