ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
°ü·Ã Áú¹® : P573. window Multicating example Áú¹®ÀÔ´Ï´Ù.
23Àå. À©µµ¿ì¿ë ¸ÖƼij½ºÆ® ÇÁ·Î±×·¥ ¿¹Á¦¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÕ´Ï´Ù. Á¦°¡ ¹®¼¸¦ ¸¸µç ȯ°æÀº Visual C++ 2008¿¡¼ È®ÀåÀÚ¸¦ .c ·Î ÄÄÆÄÀÏ Çß½À´Ï´Ù. c++À» °í·ÁÇÏÁö ¾Ê¾Ò±â ¶§¹®¿¡, c++·Î ÄÄÆÄÀÏ ÇÒ°æ¿ì void * Çüº¯È¯µî¿¡¼ ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù. c++Àº cº¸´Ù Çüº¯È¯ ±ÔÄ¢ÀÌ ¾ö°ÝÇϱ⠶§¹®ÀÔ´Ï´Ù. ¿¹ÄÁµ¥ ´ÙÀ½°ú °°Àº °æ¿ìÀä. cÄÄÆÄÀÏ·¯·Î´Â ÄÄÆÄÀÏ µÇÁö¸¸ c++·Î´Â ÄÄÆÄÀÏ µÇÁö ¾Ê½À´Ï´Ù. #include <stdio.h> void hello(const char *a) { printf("%s\n", a); } int main() { char *s="hello world"; void *d; d = (void *)s; hello(d); }
23ÀåÀÇ ¿¹Á¦¸¦ ÄÄÆÄÀÏ ÇÒ°æ¿ì setsockopt¿¡¼ Çüº¯È¯ ¿É¼ÇÀÌ ¹ß»ýÇϴµ¥, À̸¦ const char*·Î C++¿¡¼µµ ÄÄÆÄÀÏ °¡´ÉÇϵµ·Ï ¼öÁ¤Çß½À´Ï´Ù.
±×¸®°í read¸¦ fgetsÇÔ¼ö·Î ¼öÁ¤Çß½À´Ï´Ù. ¿Ö read°¡ µé¾î°¬´ÂÁö.. ¸ð¸£°Ú½À´Ï´Ù.-.-;
¼öÁ¤ÇÑ ÄÚµå.
#include <winsock2.h> #include <stdio.h> #include <ws2ipdef.h> #include <ws2tcpip.h> #define MAXLINE 1024 char *msg_exit ="exit\n"; DWORD WINAPI ThreadFunction(LPVOID lpParm); int main(int argc, char **argv) { WSADATA wsaData; SOCKET read_fd; SOCKET send_fd; int flag; struct sockaddr_in mcast_group; struct ip_mreq mreq; char name[16]; char message[MAXLINE]; if(argc != 4) { printf("Usage : %s \n", argv[0]); return 1; } if(WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { printf("WSAStartup error\n"); return 1; } sprintf(name, "%s", argv[3]); memset(&mcast_group, 0x00, sizeof(mcast_group)); mcast_group.sin_family = AF_INET; mcast_group.sin_port = htons(atoi(argv[2])); inet_pton(AF_INET, argv[1], &mcast_group.sin_addr); if( read_fd = socket(AF_INET, SOCK_DGRAM, 0) < 0 ) { return 1; } mreq.imr_multiaddr = mcast_group.sin_addr; mreq.imr_interface.s_addr = htonl(INADDR_ANY); if(setsockopt(read_fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char *)&mreq, sizeof(mreq))<0) { printf("error : add group\n"); return 1; } flag = 1; if(setsockopt(read_fd, SOL_SOCKET, SO_REUSEADDR, (const char *)&flag, sizeof(flag)) < 0) { printf("Socket Reuseaddr Error\n"); return 1; } if(bind(read_fd, (struct sockaddr *)&mcast_group, sizeof(mcast_group)) < 0) { return 1; } if( (send_fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) { return 1; } CreateThread( NULL, 0, ThreadFunction, &read_fd, 0, NULL); while(1) { memset(message, 0x00, MAXLINE); fgets(message, MAXLINE, stdin); sprintf(message, "%s : %s", name, message); if(sendto(send_fd, message, strlen(message), 0, (struct sockaddr *)&mcast_group, sizeof(mcast_group)) < strlen(message)) { return 1; } } WSACleanup(); return 0; } DWORD WINAPI ThreadFunction(LPVOID lpParm) { int addrlen; char message[MAXLINE]; struct sockaddr_in from; SOCKET read_fd; read_fd = *(int *)lpParm; addrlen = sizeof(from); memset(message, 0x00, MAXLINE); if(recvfrom(read_fd, message, MAXLINE, 0, (struct sockaddr *)&from, &addrlen)) { printf("error : recvfrom\n"); return 1; } printf("%s", message); } |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|