통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
데브피아 C# 포럼 마을에 오신 것을 환영합니다.
  마을등급 C#   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 비사모 주민 12892 since 2006-12-28
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
[마을 게시판]
구인/구직 게시판
건의 / 운영 제안
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 질문&답변 ※ 꼭 답변채택을 해주시어 성의껏 답변해주신 회원님께 감사의 마음을 전하시길 바랍니다.
 집 PC(Server) -(UDP:Send)-> 피시방 PC(Client) 수신이 안됨.  | Network Program 2020-01-23 오후 12:15:03
건강하자 번호: 179469 추천:0  / 읽음:113

* 피시방 PC Client UDP 설정은 (피시방에서 사용하는 PC IP, 포트는 12000 설정해 놓아습니다.)

 

   - IPHostEntry host = Dns.GetHostByName(Dns.GetHostName());
   _strMyIP = host.AddressList[0].ToString();

   //

   m_pUdpServer.Bindings = new IPEndPoint[] { new IPEndPoint(IPAddress.Parse(_strMyIP), 12000) };

 

* 피시방 PC 에서 개인용 집 컴퓨터로 접속하면(TCP) 들어오는 Client IP  (221.142.xx.xx) 로

   본인 집의 PC에서 TCP 로 들어온 IP, Port :12000 으로 Client 피시방 PC로 패킷을 보내면

   피시방  PC Client 에 수신이 안되고  있습니다.

 

   m_pTargetEP = new IPEndPoint(IPAddress.Parse(Target_ip), 12000));
   m_pUdpServer.SendPacket(encodedData, 0, encodedData.Length, m_pTargetEP); 

 

>>

 

   이렇게 설정해 놓고 서버에서 패킷을 보내면 Client 측에서 수신이 안되고 있습니다.

   어떤 문제가 있는지 궁금합니다.

   님들의 자문을 듣고자 합니다.

 

   참고 : 피시방에서 TCP로 집으로 수신이 되고 있습니다.

 

* 참고로 이상한것은 집에서 Server와 Client 테스트 해본 결과

   Client PC 에서 본인 피시 IP  (192.xxx.xx.37 (사설 IP))

 

   - IPHostEntry host = Dns.GetHostByName(Dns.GetHostName());
     IP = host.AddressList[0].ToString();

 

   근데

 

   - Client 에서  TCP 로 Server 수신 IP 를 보면

     IPEndPoint  IP  = (IPEndPoint)client.RemoteEndPoint;

 

    Client 본인 192.xxx.xx.37 가 아니고

     192.xxx.xx.1 으로 나오네요.. [Port : 56351]

 

 

다가오는 설 복많이 받으시고 건강 하시길...

이 글에 답변 등록하기
 [답변]참고해보세요. 2020-01-23 오후 2:44:26
칡흙 번호: 179471 추천:0  

 

WAN

PC Client UDP 12000   221.142.xx.xx   ----->    PC Server            성공

PC Client UDP 12000   221.142.xx.xx   <-----    PC Server            실패

 

LAN

PC Client UDP 12000   192.xxx.xx.1  56351   ----->    PC Server   192.xxx.xx.37        

 

보통 xxx.xxx.xxx.1 이나. xxx.xxx.xxx.254 는 공유기 게이트웨이 주소로 사용됩니다.

 
---------------------------------------------------------------------------------
 
소켓 통신은. 서버와 클라이언트 모두. TCP UDP 각각. 같은 포트를 사용합니다.
Client TCP 12000  <--->  Server TCP 12000
Client UDP 13000  <--->  Server UDP 13000

 
---------------------------------------------------------------------------------
netstat -na 로 확인해보면.
서버 클라이언트 접속시. 소켓 마다. 랜덤 포트를 생성합니다.
 
 

웹 브라우저에서 접속 확인 방법 TCP

http://127.0.0.1:8080

 

telnet.exe  127.0.0.1  8080

 
 
---------------------------------------------------------------------------------
책 사이트에서. 부록 시디를 제공하기도 합니다.

C# 소켓 프로그래밍 검색결과, 책 검색 : 네이버 책
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=C%23+%EC%86%8C%EC%BC%93+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

C# socket msdn - Bing
http://www.bing.com/search?q=C%23+socket+msdn&PC=U531&cvid=0cbc6bbf14094692ab6f3d4be544dc7f&FORM=ANNTA1

Socket 클래스 (System.Net.Sockets) | Microsoft Docs
http://docs.microsoft.com/ko-kr/dotnet/api/system.net.sockets.socket?view=netframework-4.8

IT 이야기 :: [Program C#]동기 서버/클라이언트 msdn 예제 - 윈도우 버전
http://it-jerryfamily.tistory.com/entry/Program%EB%8F%99%EA%B8%B0-%EC%84%9C%EB%B2%84%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-msdn-%EC%98%88%EC%A0%9C-%EC%9C%88%EB%8F%84%EC%9A%B0-%EB%B2%84%EC%A0%84

IT 이야기 :: [Program C#]비동기 서버/클라이언트 msdn 예제 - 콘솔 버전
http://it-jerryfamily.tistory.com/entry/Program%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%84%9C%EB%B2%84%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-msdn-%EC%98%88%EC%A0%9C-%EC%BD%98%EC%86%94-%EB%B2%84%EC%A0%84

IT 이야기 :: [Program C#]비동기 서버/클라이언트 msdn 예제 - 윈도우 버전
http://it-jerryfamily.tistory.com/entry/Program%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%84%9C%EB%B2%84%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-msdn-%EC%98%88%EC%A0%9C-%EC%9C%88%EB%8F%84%EC%9A%B0-%EB%B2%84%EC%A0%84

Asynchronous Client/Server Socket Example with C# (from MSDN library)
http://seonbicode.tistory.com/16

이 글에 답변 등록하기
 [답변]방화벽이 기본 차단 정책일텐데요 2020-01-23 오후 8:01:05
골빈당 번호: 179472 추천:0  

 PC방이라면 그 안에 라우터 + 방화벽 구성이 된 경우가 있고

 

 또는 그 상위 인터넷업체가 제공해주는 경우도 있는데요

 

 기본적으로  PC방에서 나가는 트래픽은 자유롭지만

 

 외부에서 PC방으로 유입되는 트래픽은 차단되는 경우가  일반적입니다.

 

 예전에 PC방 IP로  원격 접속해서 장난질 치던 시절이 있었는데

 

 여러가지 요인으로 인해 다 막히는게 일반적입니다.

 

 때문에 PC방에서   공인IP로 트래픽이 가고, 다시 트래픽이 리턴되는 것은 허용되어도

 

 밖에서 UDP로 날아오는 데이터는 차단될겁니다.

 

일부 허용하는 트래픽 외에는 기본 차단으로 압니다.

 

이 글에 답변 등록하기
         [답변]님들의 답변 감사 합니다. 2020-01-23 오후 8:29:49
건강하자 번호: 179473 추천:0  

열심히 풀어 보게습니다.

 

이 글에 답변 등록하기
                 [답변]그림으로 설명 합니다. 다시한번 더 부탁 합니다. 2020-01-23 오후 11:16:43
건강하자 번호: 179474 추천:0  

 

 

* 서버는  왼쪽 그림처럼 "C"  p/c 사설 ip 192.168.xx.35 입니다. 

   (공인 ip 는 236.192.xx.xx 입니다.)

 

* 서버의 프로그램 코딩은 udp 설정을 공인 ip 236.192.xx.xx 그리고 포크는 11000 으로 해습니다.

   (물론 공유기에 포트포워딩는 192.168.xx.35로 포트 11000 설정 해 두었습니다.)

 

* 오른쪽 클라이언트 프로그램 " c1"  udp 설정은 공인 ip 172.xx.xx 그리고 포트는 12000으로 해습니다.

>>

이런환경 조건으로 서버에서 클라이언트로 udp 패킷을 보내면 "c1" p/c에서 받지를 못하고 있습니다.

(서버에서 클라이언트 ip 172.xx.xx 포트 12000 으로 보내면 "c1"  p/c에  패킷을 받지 못함)

 

뭐가 문제인지 궁금 합니다.

 

부탁 합니다.

 

명절 잘 보내시길 바랍니다.

 

그럼 꾸벅 ^-^

 

 

 

 

 

 

 

 

 

이 글에 답변 등록하기
                         [답변]172.16.x.x IP일거 같은데요 2020-01-26 오후 12:40:01
골빈당 번호: 179477 추천:0  

1) TCP는  connected 개념이 들어가서  클라이언트에서 서버에 접속이 유지되는 것처럼 운용합니다.

 

2) UDP는 connect less 개념이 들어갑니다.  클라이언트에서 서버로 가는 트래픽과  서버에서 클라이언트로 가는 트래픽은 무관합니다.

  즉  공유기 양쪽다 UDP포트에 대한 포트 포워딩이 필요한 것 입니다.

 

 

3) 사용자 IP가 172.16.x.x 가 아닐까 싶은데요

   사용자가 접속할때 쓰는 공인 IP가 확인되어야 할 것 같습니다.

   서버에서 사용자로  NAT IP로 데이터를 보낼 수는 없습니다.

 

  

 클라이언트에서 서버로는  공인 IP를 향해 패킷을 던져서 통신이 될 수 있지만

 서버에서 클라이언트로  172.x IP로 던진다고 할 때, 경로를 못찾는 상태 같습니다.

 

 

이 글에 답변 등록하기
                         [답변]............... 2020-01-27 오전 10:30:16
의미없다 번호: 179478 추천:0  

서버와 서버쪽 공유기 설정은 문제 없음.

 

클라쪽 공유기 ip가 172.로 시작하면 192와 같은 사설ip 대역이라서 외부와 통신이 안됨.

 

즉, 클라쪽 공유기가 공인 ip를 받을 수 있도록 설정하고, 클라쪽 공유기에서도 c1으로 포트포워딩을 해줘야함.

 

서버와 c1이 서로에서 ping 명령을 했을때 정상적으로 패킷이 전송되야 기본 환경 설정이 완료된것임.

 

서버 -> c1 : ping xxx.xxx.xxx.xxx:12000

c1 -> 서버 : ping 236.192.xx.xx:11000

 

이 글에 답변 등록하기
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.