#include #include #include #pragma comment(lib,"ws2_32.lib")
#include using namespace std;
//ip首部
typedef struct tippackhead
; inline unsigned headlen() const
inline unsigned packlen() const
byte ver_hlen; //ip協議版本和ip首部長度。高4位為版本,低4位為首部的長度(單位為4bytes)
byte bytos; //服務型別
word wpacketlen; //ip包總長度。包括首部,單位為byte。[big endian]
word wsequence; //序號,一般每個ip包的序號遞增。[big endian]
word wmarkfragpoi;
byte byttl; //生存時間
byte byprotocoltype; //協議型別,見protocol_type定義
word wheadchecksum; //ip首部校驗和[big endian]
dword dwipsrc; //源位址
dword dwipdes; //目的位址
} ip_pk_head;
int decodeip(char *buf, int len);
int decodeip(char *buf, int len)
return 0;
}void autowsacleanup()
int main()
atexit( autowsacleanup );
//建立socket
socket h = socket( af_inet, sock_raw, ipproto_ip);
if( h == invalid_socket )
//獲取本機位址
char far name[128];
if( -1 == gethostname(name, sizeof(name)) )
struct hostent far * phostent;
phostent = gethostbyname(name);
//繫結本地位址到socket控制代碼
sockaddr_in addr;
addr.sin_family = af_inet;
addr.sin_addr = *(in_addr*)phostent->h_addr; //ip
addr.sin_port = 0; //埠,ip層埠可隨意填
if( socket_error == bind( h,(sockaddr *)&addr,sizeof(addr) ) )
//設定該socket為接收所有流經繫結的ip的網絡卡的所有資料,包括接收和傳送的資料報
//該函式在mstcpip.h裡面,詳見msdn幫助
u_long sioarg = 1;
dword wt=0;
if( socket_error == wsaioctl( h, sio_rcvall , &sioarg,sizeof(sioarg),null,0,&wt,null,null ) )
//我們只需要接收資料,因此設定為阻塞io,使用最簡單的io模型
u_long bioarg = 0;
if( socket_error == ioctlsocket( h, fionbio , &bioarg ) )
//開始接收資料
//因為前面已經設定為阻塞io,recv在接收到資料前不會返回。
//當返回<=0時表示接收失敗,退出迴圈
//可以在另乙個執行緒執行此迴圈,主線程closesocket可以使recv失敗而結束迴圈
char buf[102400];
int len = 0;
do}while( len > 0 );
closesocket( h );
return 0;
}
漢化版的vc貌似都沒有mstcpip.h檔案
內容如下,將內容儲存為mstcpip.h
然後放到microsoft visual studio\vc98\include這個資料夾下面即可
/* argument structure for sio_keepalive_vals */
struct tcp_keepalive ;
// new wsaioctl options
#define sio_rcvall _wsaiow(ioc_vendor,1)
#define sio_rcvall_mcast _wsaiow(ioc_vendor,2)
#define sio_rcvall_igmpmcast _wsaiow(ioc_vendor,3)
#define sio_keepalive_vals _wsaiow(ioc_vendor,4)
#define sio_absorb_rtralert _wsaiow(ioc_vendor,5)
#define sio_ucast_if _wsaiow(ioc_vendor,6)
#define sio_limit_broadcasts _wsaiow(ioc_vendor,7)
#define sio_index_bind _wsaiow(ioc_vendor,8)
#define sio_index_mcastif _wsaiow(ioc_vendor,9)
#define sio_index_add_mcast _wsaiow(ioc_vendor,10)
#define sio_index_del_mcast _wsaiow(ioc_vendor,11)
VC6 0 製作的《數獨》遊戲發布!!!!
哈哈 第二款遊戲終於完成啦 這次的是兔斯基主題的數獨 呵呵 偶覺得很配啊 首先介紹下數獨的規則 如果你會玩數獨就跳過這一段吧 規則太簡單了,在空白位置填上數字1 9,但必須滿足 1.每一行都包括數字1 9 2.每一列都包括數字1 9 3.每乙個小的九宮格都包括陣列1 9 廢話少說了,馬上上圖。遊戲主...
VC6 0迴圈的彙編
今天突然來了興趣,想看看彙編級的迴圈.include using namespace std int main 1 include 2 using namespace std 3 4 int main 5 00401290 jmp main 28h 00401278 11 12 00401292 p...
VC6 0存在的問題
問題1public cstring file add2 0 初始化為零後,在成員變數中消失,從而出錯 儲存路徑 cstring fileadd 儲存 iplimage first image null 初始化為零後,在成員變數中消失,從而出錯 iplimage first image 原因,在.h檔...