banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows về lập trình socket  XML
  [Programming]   về lập trình socket 31/07/2007 11:49:43 (+0700) | #1 | 75240
maihoahn
Member

[Minus]    0    [Plus]
Joined: 30/07/2007 20:09:20
Messages: 10
Offline
[Profile] [PM]
tùy chọn SIO_RCVALL bị lỗi 10022

đã thêm tiêu đề #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)
trong chương trình có code:

unsigned int ul=1;
DWORD byteret=0;
WSAIoct(socketraw,SIO_RCVALL,&ul,sizeof(ul),NULL,0,&byte ret,NULL,NULL);

tôi đang sử dụng winxp sp2, và đã tạo được raw socket, mà vẫn bị lỗi 10022 sau khi thực hiện hàm WSAIoctl()
không biết tại sao, ai biết giải thích giúp với!
[Up] [Print Copy]
  [Question]   về lập trình socket 31/07/2007 11:59:51 (+0700) | #2 | 75243
[Avatar]
gsmth
Elite Member

[Minus]    0    [Plus]
Joined: 15/02/2007 13:25:36
Messages: 749
Offline
[Profile] [PM] [WWW] [Yahoo!]
Search hộ này.. microsoft.com nói là:

WSAEINVAL
10022

Invalid argument.

Some invalid argument was supplied (for example, specifying an invalid level to the setsockopt function). In some instances, it also refers to the current state of the socket—for instance, calling accept on a socket that is not listening.
 
[Up] [Print Copy]
  [Question]   Re: về lập trình socket 31/07/2007 21:02:25 (+0700) | #3 | 75314
maihoahn
Member

[Minus]    0    [Plus]
Joined: 30/07/2007 20:09:20
Messages: 10
Offline
[Profile] [PM]
tôi nghĩ rằng các đối số tôi truyền vào là đúng, tôi cũng đã thử download code của sniffer trên diễn đàn hva về và khi chạy chương trình cũng bị báo lỗi đó,tỗi nghĩ rằng đó là do HDH của mình(hiện tôi dang dùng winxpsp2) nó không hỗ trợ cho viêc thực thi tùy trọn này, hoạc là trình biên dịch vc 6.0 thiếu 1 cái gì đó cũng ko biết nữa.
các bạn có ý kiến gì không nói tôi với
[Up] [Print Copy]
  [Question]   về lập trình socket 31/07/2007 21:21:48 (+0700) | #4 | 75323
[Avatar]
KyNam
Member

[Minus]    0    [Plus]
Joined: 15/07/2007 01:37:35
Messages: 74
Offline
[Profile] [PM] [WWW]
bạn hãy post toàn bộ code liên quan lên đây , bạn nghĩ bạn viết đúng còn microsoft nói bạn viết sai
[Up] [Print Copy]
  [Question]   về lập trình socket 31/07/2007 21:25:21 (+0700) | #5 | 75325
mfeng
Researcher

Joined: 29/10/2004 15:16:29
Messages: 243
Offline
[Profile] [PM]
Windows XP SP2 đã giới hạn không cho sử dụng Raw Socket vì lo ngại chức năng này bị lợi dụng để tấn công hệ thống (như CodeRed, Blaster...). Đọc thêm ở http://www.grc.com/dos/intro.htm
[Up] [Print Copy]
  [Question]   Re: về lập trình socket 01/08/2007 20:49:38 (+0700) | #6 | 75686
maihoahn
Member

[Minus]    0    [Plus]
Joined: 30/07/2007 20:09:20
Messages: 10
Offline
[Profile] [PM]
đúng là microsoft giới hạn winxpsp2 trong việc tạo raw socket
nhưng họ vẫn cho ta làm, bằng cách thêm khóa registry:
HKLM/SYSTEM/CURENT CONTROLSET/services/afd/parameters/
DisAbleRawsecurity=1(DWORD)
có lẽ tôi đã tìm ra vấn đề, có thể là do máy tính của tôi không nối mạng smilie ,cám ơn các bạn
[Up] [Print Copy]
  [Programming]   về lập trình socket 06/02/2011 09:08:18 (+0700) | #7 | 230807
[Avatar]
nguoimoi91
Member

[Minus]    0    [Plus]
Joined: 25/01/2010 04:14:23
Messages: 4
Offline
[Profile] [PM] [Email]
UpdateData( TRUE );
if( !m_PortNo )
{
MessageBox( "Please enter the Port No & then click \"Connect Me\"" );
return;
}

WSADATA wsaData;
SOCKET RecvSocket;
sockaddr_in RecvAddr;
int Port = 6791;
char RecvBuf[1024];
int BufLen = 1024;
sockaddr_in SenderAddr;
int SenderAddrSize = sizeof(SenderAddr);
char m_SocError[23];
// Initialize Winsock
WSAStartup(MAKEWORD(2,2), &wsaData);

// Create a receiver socket to receive datagrams
RecvSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

// Bind the socket to any address and the specified port.
RecvAddr.sin_family = AF_INET;
RecvAddr.sin_port = htons(m_PortNo);
RecvAddr.sin_addr.s_addr = inet_addr( "255.255.255.255" );

int BindCheck = bind(RecvSocket, (SOCKADDR *) &RecvAddr, sizeof(RecvAddr));
if( 0 != BindCheck )
{
AfxMessageBox("SocketBind");
}

if(recvfrom(RecvSocket,RecvBuf,BufLen,0,(SOCKADDR *)&SenderAddr,&SenderAddrSize)== SOCKET_ERROR)
{
MessageBox("ERROR");
}
else
{
m_DataReceived = RecvBuf;
UpdateData(FALSE);

closesocket(RecvSocket);
WSACleanup();
exit(1) ;
}

}
cho em hỏi nguyên bản code này là j' vậy, trên mạng em tìm thì bảo sửa socket 10022 nhưng em ko pit' cho vào để sửa có ai bít chỉ em nhaaaaa smilie(
Trong tôi có 2 màu trắng và đen.
Tôi luôn tự hỏi chính bản thân tôi rằng:" Cuộc đời tôi dần sẻ đi về đâu ?" T_T
[Up] [Print Copy]
  [Programming]   về lập trình socket 07/02/2011 22:11:50 (+0700) | #8 | 230843
[Avatar]
angel-pc
Member

[Minus]    0    [Plus]
Joined: 01/01/2011 01:15:32
Messages: 63
Offline
[Profile] [PM]
chuyển qua lập trình bằng winpcap đi cho khoẻ
change packet từ lớp 1 tới lớp 4 luôn
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|