本文整理汇总了C++中mazewarinstance::Ptr::mazePortIs方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::mazePortIs方法的具体用法?C++ Ptr::mazePortIs怎么用?C++ Ptr::mazePortIs使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mazewarinstance::Ptr
的用法示例。
在下文中一共展示了Ptr::mazePortIs方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sizeof
/* This will presumably be modified by you.
It is here to provide an example of how to open a UDP port.
You might choose to use a different strategy
*/
void
netInit()
{
bool joinGame();
Sockaddr nullAddr;
Sockaddr *thisHost;
char buf[128];
int reuse;
u_char ttl;
struct ip_mreq mreq;
/* MAZEPORT will be assigned by the TA to each team */
M->mazePortIs(htons(MAZEPORT));
gethostname(buf, sizeof(buf));
if ((thisHost = resolveHost(buf)) == (Sockaddr *) NULL)
MWError("who am I?");
bcopy((caddr_t) thisHost, (caddr_t) (M->myAddr()), sizeof(Sockaddr));
M->theSocketIs(socket(AF_INET, SOCK_DGRAM, 0));
if (M->theSocket() < 0)
MWError("can't get socket");
/* SO_REUSEADDR allows more than one binding to the same
socket - you cannot have more than one player on one
machine without this */
reuse = 1;
if (setsockopt(M->theSocket(), SOL_SOCKET, SO_REUSEADDR, &reuse,
sizeof(reuse)) < 0) {
MWError("setsockopt failed (SO_REUSEADDR)");
}
nullAddr.sin_family = AF_INET;
nullAddr.sin_addr.s_addr = htonl(INADDR_ANY);
nullAddr.sin_port = M->mazePort();
if (bind(M->theSocket(), (struct sockaddr *)&nullAddr,
sizeof(nullAddr)) < 0)
MWError("netInit binding");
/* Multicast TTL:
0 restricted to the same host
1 restricted to the same subnet
32 restricted to the same site
64 restricted to the same region
128 restricted to the same continent
255 unrestricted
DO NOT use a value > 32. If possible, use a value of 1 when
testing.
*/
ttl = 32;
if (setsockopt(M->theSocket(), IPPROTO_IP, IP_MULTICAST_TTL, &ttl,
sizeof(ttl)) < 0) {
MWError("setsockopt failed (IP_MULTICAST_TTL)");
}
/* uncomment the following if you do not want to receive messages that
you sent out - of course, you cannot have multiple players on the
same machine if you do this */
#if 0
{
u_char loop = 0;
if (setsockopt(M->theSocket(), IPPROTO_IP, IP_MULTICAST_LOOP, &loop,
sizeof(loop)) < 0) {
MWError("setsockopt failed (IP_MULTICAST_LOOP)");
}
}
#endif
/* join the multicast group */
mreq.imr_multiaddr.s_addr = htonl(MAZEGROUP);
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
if (setsockopt(M->theSocket(), IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)
&mreq, sizeof(mreq)) < 0) {
MWError("setsockopt failed (IP_ADD_MEMBERSHIP)");
}
/*
* Now we can try to find a game to join; if none, start one.
*/
/* I haven't implemented joinGame or startGame in this sample */
/*
if (!joinGame())
startGame();
*/
printf("\n");
/* set up some stuff strictly for this local sample */
M->myRatIdIs(0);
M->scoreIs(0);
SetMyRatIndexType(0);
/* Get the multi-cast address ready to use in SendData()
calls. */
//.........这里部分代码省略.........
示例2: sizeof
void
netInit()
{
Sockaddr nullAddr;
Sockaddr *thisHost;
char buf[128];
int reuse;
u_char ttl;
struct ip_mreq mreq;
/* MAZEPORT will be assigned by the TA to each team */
M->mazePortIs(htons(MAZEPORT));
gethostname(buf, sizeof(buf));
if ((thisHost = resolveHost(buf)) == (Sockaddr *) NULL)
MWError("who am I?");
bcopy((caddr_t) thisHost, (caddr_t) (M->myAddr()), sizeof(Sockaddr));
M->theSocketIs(socket(AF_INET, SOCK_DGRAM, 0));
if (M->theSocket() < 0)
MWError("can't get socket");
/* SO_REUSEADDR allows more than one binding to the same
socket - you cannot have more than one player on one
machine without this */
reuse = 1;
if (setsockopt(M->theSocket(), SOL_SOCKET, SO_REUSEADDR, &reuse,
sizeof(reuse)) < 0) {
MWError("setsockopt failed (SO_REUSEADDR)");
}
nullAddr.sin_family = AF_INET;
nullAddr.sin_addr.s_addr = htonl(INADDR_ANY);
nullAddr.sin_port = M->mazePort();
if (bind(M->theSocket(), (struct sockaddr *)&nullAddr,
sizeof(nullAddr)) < 0)
MWError("netInit binding");
/* Multicast TTL:
0 restricted to the same host
1 restricted to the same subnet
32 restricted to the same site
64 restricted to the same region
128 restricted to the same continent
255 unrestricted
DO NOT use a value > 32. If possible, use a value of 1 when
testing.
*/
ttl = 1;
if (setsockopt(M->theSocket(), IPPROTO_IP, IP_MULTICAST_TTL, &ttl,
sizeof(ttl)) < 0) {
MWError("setsockopt failed (IP_MULTICAST_TTL)");
}
/* join the multicast group */
mreq.imr_multiaddr.s_addr = htonl(MAZEGROUP);
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
if (setsockopt(M->theSocket(), IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)
&mreq, sizeof(mreq)) < 0) {
MWError("setsockopt failed (IP_ADD_MEMBERSHIP)");
}
/*
* Now we can try to find a game to join; if none, start one.
*/
printf("\n");
/* set up some stuff strictly for this local sample */
//int temp = rand()%8;/*FIXME- REALLY REALLY RANDOM*/
M->myRatIdIs(0); // FIXME
//M->rat(M->myRatId().value()).playing=true;
//cout << M->myRatId().value() << endl;
//cout << temp << endl;
M->scoreIs(0);
SetMyRatIndexType(0);
/* Get the multi-cast address ready to use in SendData()
calls. */
memcpy(&groupAddr, &nullAddr, sizeof(Sockaddr));
groupAddr.sin_addr.s_addr = htonl(MAZEGROUP);
}