Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

½Ð°Ý¦³Ãö©ó socket ªº°ÝÃD - use VC++ 6.0

0 views
Skip to first unread message

Unconcealable

unread,
Nov 25, 1999, 3:00:00 AM11/25/99
to

想請問下面這一小段程式碼:

#include <iostream>
#include <winsock2.h>
using namespace std;

#define MAXHOSTNAMELEN 128

int main () {
int sockSrvr;
int nPort = 3333;
char hostname[MAXHOSTNAMELEN + 1];

sockSrvr = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in address;
struct hostent *host;

gethostname(hostname, MAXHOSTNAMELEN);
host = gethostbyname(hostname);
address.sin_family = host -> h_addrtype;
address.sin_port = htons(nPort);

bind(sockSrvr, &address, sizeof(address));
listen(sockSrvr, SOMAXCONN);

return (1);
}

當我編譯的時候出現這樣的錯誤訊息:

error C2664: 'bind' : cannot convert parameter 2 from
'struct sockaddr_in *' to 'const struct sockaddr *'
Types pointed to are unrelated; conversion requires reinterpret_cast,
C-style cast or function-style cast
Error executing cl.exe.

請問這段錯誤訊息所指的是?又應該做何修改呢?

thanks in advance.
--
[1;32m※ Origin: [33m台灣科大電子站 [37m<bbs.et.ntust.edu.tw> [m
[1;31m◆ From: [36m140.118.41.15 [m

四眼的王蟲

unread,
Nov 25, 1999, 3:00:00 AM11/25/99
to
On 25 Nov 1999 13:17:22 GMT, Ago...@bbs.et.ntust.edu.tw
(Unconcealable) wrote:

> 當我編譯的時候出現這樣的錯誤訊息:
>
> error C2664: 'bind' : cannot convert parameter 2 from
> 'struct sockaddr_in *' to 'const struct sockaddr *'
> Types pointed to are unrelated; conversion requires reinterpret_cast,
> C-style cast or function-style cast
> Error executing cl.exe.
>
> 請問這段錯誤訊息所指的是?又應該做何修改呢?

bind(sockSrvr, reinterpret_cast<struct sockaddr*>(&address),
sizeof(address));

四眼的王蟲

Justin

unread,
Nov 27, 1999, 3:00:00 AM11/27/99
to

Unconcealable <Ago...@bbs.et.ntust.edu.tw> wrote in message
news:3XZWaY$u...@bbs.et.ntust.edu.tw...

>
> 想請問下面這一小段程式碼:
>
> #include <iostream>
> #include <winsock2.h>
> using namespace std;
>
> #define MAXHOSTNAMELEN 128
>
> int main () {
> int sockSrvr;
> int nPort = 3333;
> char hostname[MAXHOSTNAMELEN + 1];
>
> sockSrvr = socket(AF_INET, SOCK_STREAM, 0);
> struct sockaddr_in address;
> struct hostent *host;
>
> gethostname(hostname, MAXHOSTNAMELEN);
> host = gethostbyname(hostname);
> address.sin_family = host -> h_addrtype;
> address.sin_port = htons(nPort);
>
> bind(sockSrvr, &address, sizeof(address));

改為:
bind( sockSrvr,(sockaddr *)& ... );
就可以了,這是轉型的問題。

> listen(sockSrvr, SOMAXCONN);
>
> return (1);


> }
>
> 當我編譯的時候出現這樣的錯誤訊息:
>
> error C2664: 'bind' : cannot convert parameter 2 from
> 'struct sockaddr_in *' to 'const struct sockaddr *'
> Types pointed to are unrelated; conversion requires reinterpret_cast,
> C-style cast or function-style cast
> Error executing cl.exe.
>
> 請問這段錯誤訊息所指的是?又應該做何修改呢?
>

0 new messages