Winsock UDP 남자 또는 여자? 즉시 수정

모두가 말하는 PC 수리 소프트웨어를 받으십시오. 여기에서 다운로드하세요.

지난 한 주 동안 여러 독자가 귀하가 단순히 winsock UDP 클라이언트라는 사실을 알게 되었다고 말했습니다.

UDP 소켓

UDP는 사용자 데이터그램 프로토콜(User Datagram Protocol)의 약자이며 TCP와 다른 많은 프로토콜로, 인터넷에서 데이터를 전송하기 위해 가장 일반적으로 관리되는 프로토콜입니다.

UDP는 몇 가지 면에서 TCP와 다릅니다. 대다수의 UDP가 비연결형 프로토콜이라는 점을 주목하는 것이 중요합니다.

TCP V . UDP

첫 번째 TCP 프로세스에서 또 다른 정상적인 연결이 설정되어 three-way handshake를 수행합니다. 때때로 우리는 가장 중요한 connect() 소켓 프로세스에 대한 호출에 의해 수행됩니다. 그러나 이 포트는 Udp가 되도록 설정되어 있지 않습니다.

그 UDP 프로토콜을 사용하는 간단한 경우에, 이 클라이언트는 기능 패킷 a를 특정 호스팅 서버에 보내고 웹 서버는 그것을 가로챌지 여부를 결정합니다. 이 udp 방법은 실패할 경우 영향을 받지 않습니다.

winsock udp client

이것은 또한 TCP 프로토콜에서 흔히 발생하는 것과는 반대입니다. 수신측이 패킷을 수신하지 않으면 송신측은 발견한 유형을 찾아 기본 수신자가 올바르게 제공할 때까지 자체 패킷을 다시 보낼 수 있습니다. 이것이 바로 가입 비밀입니다.

UDP 소켓 인코딩

업데이트: Reimage

컴퓨터가 제대로 작동합니까? 걱정하지 마세요. Reimage이 도와드리겠습니다. 몇 번의 클릭만으로 당사 소프트웨어가 시스템에 문제가 있는지 검색하고 자동으로 수정할 수 있습니다. 따라서 가능한 한 빨리 업무에 복귀할 수 있습니다. 약간의 결함으로 인해 지체하지 마십시오. 지금 Reimage을 다운로드하세요!

  • 1단계: Reimage 웹사이트로 이동하여 "다운로드" 버튼을 클릭합니다.
  • 2단계: 화면의 지시에 따라 Reimage 설치
  • 3단계: Reimage을 열고 "지금 스캔" 버튼을 클릭합니다.

  • 이 페이지에서 우리는 소프트웨어와 함께 서버를 구축할 때 뿐만 아니라 매우 간단한 UDP 소켓 프로그래밍을 할 것입니다. Windows 플랫폼이 API 소켓을 Winsock으로 인식한 직후에 이 작업을 수행합니다.

    인코딩을 위해 6 vc++.0 또는 Express Type 2010을 사용하는 것이 좋습니다. 기본적으로 무료이며 아래 microsoft.com 롤아웃 사이트에서 다운로드할 수 있습니다.

    Udp 서버

    UDP 서버 프로그램은 들어오는 UDP 연결을 수락할 수 있습니다.
    실제로 서버 코드는 다음과 같습니다.

    <이전>/*그냥 UDP 서버*/#include#include#pragma comment(lib,”ws2_32.lib”) //Winsock 라이브러리#define 512 //최대. 실드 공간#define 8888 port //새 데이터를 위한 플러그인내부()소켓;구조 sockaddr_in 서버, si_other;간격 slen, recv_len;charbuf[BUFLEN];WSADATA-wsa;slen은 sizeof(si_other)입니다.// Winsock 초기화printf(“nWinsock 초기화…”);if (WSAStartup(MAKEWORD(2,2),&wsa) !는 0을 의미)printf(“오류. 오류 코드: %d”,WSAGetLastError());종료(EXIT_FAILURE);printf(“초기화되었습니다.n”);//절대 소켓 생성if ((s는 소켓(AF_INET, SOCK_DGRAM, 0)과 동일) == INVALID_SOCKET)printf(“시작 소켓 설정 실패: %d”, WSAGetLastError());printf(“소켓이 생성되었습니다.n”);// sockaddr_inserver를 준비합니다. structure.sin_family는 AF_INET과 같습니다.server.sin_addr.s_addr은 INADDR_ANY를 의미합니다.server.sin_port = htons(포트);//마디if( bind(s ,(struct sockaddr *)&server Sizeof(server)) 그 위에 , == SOCKET_ERROR)printf(“도움말 오류 규칙으로 인해 바인딩에 실패했습니다: %d”, WSAGetLastError());종료(EXIT_FAILURE);insert(“링크가 만들어졌습니다.”);// 데이터를 지원하는 수신기다리는 동안 (1)printf(“데이터에서…”);헹굼(표준);// 사이트는 로딩을 채울 때 null을 지웁니다. 이 상황은 이전에 데이터를 수신했을 수 있습니다.memset(buf,’

    /*단순 UDP 서버*/#include#포함#pragma comment(lib,"ws2_32.lib") .//Winsock 라이브러리#define .BUFLEN .dimensions .512 .//max .to .do .with .buffer#define .PORT .8888 .// .port 불행히도 .들어오는 .data에 대해 .listen .listen내부()소켓;구조 .sockaddr_in .webserver, .si_other;내부 슬.... . 퍼프[버플렌];WSADATA recv_len;탱크 대;slen = 크기(si_other);// 초기화Printf("nWinsock winsock이 초기화되었습니다...");if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)printf("오류. 오류 코드: %d",WSAGetLastError());종료(EXIT_FAILURE);printf("초기화되었습니다.n");// 소켓If((s Create equals socket(AF_INET SOCK_DGRAM , , 0 )) == INVALID_SOCKET)printf("%d에 소켓 생성에 실패했습니다.", WSAGetLastError());printf("소켓이 생성되었습니다.n");// sockaddr_in 구조 준비server.sin_family는 AF_INET을 의미합니다.server.sin_addr.s_addr = INADDR_ANY;server.sin_port는 htons()와 동일합니다.//마디If(포트 바인드(s,(sockaddr도 구성, *)&서버 크기(서버)) == SOCKET_ERROR)printf("오류 코드로 링크 실패: %d", WSAGetLastError());종료(EXIT_FAILURE);insert("링크가 만들어졌습니다.");//계속 (1)Printf("데이터 대기 대기데이터와 관련하여...");클리어 덤프(stdout);// 0으로 쌓인 버퍼, 이것은 이전에 데이터를 보유할 수 있습니다.memset(buf,'', BUFLEN);// 데이터를 빌드하려고 시도하면 완전한 호출로 간주됩니다.차단하는 경우 ((recv_len recvfrom(s, 의미 buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen)) == SOCKET_ERROR)printf("recvfrom()이 오류 표준으로 실패했습니다: %d", WSAGetLastError());종료(EXIT_FAILURE);// 클라이언트/피어 세부 정보를 수신한 일부 데이터에 추가로 표시printf("%s:%d를 통해 수신된 패킷n", inet_ntoa(si_other.sin_addr), ntohs(si_other.sin_port));printf("데이터: %sn", buf);//이제 selfsame 데이터로 이 클라이언트를 확인합니다.if (sendto(s, buf, recv_len, 0, (struct sockaddr*) &si_other, slen) == SOCKET_ERROR)printf("sendto() 오류 처리 오류 코드: %d", WSAGetLastError());소켓 콘센트;WSACleanup();반환(exit_failure);닫기 0;

    ‘, 버퍼);// 데이터를 끝내려고 시도하는 것은 모두 제한적인 호출입니다.if ((recv_len은 recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen)) == SOCKET_ERROR)printf(“오류 코드로 recvfrom()을 수행하지 못했습니다: %d”, WSAGetLastError());종료(EXIT_FAILURE);//수신 데이터의 클라이언트/피어 정보를 출력printf(“%s:%d 때문에 패킷 수신n”, inet_ntoa(si_other.sin_addr), ntohs(si_other.sin_port));printf(“데이터: %sn”, buf);// 이제 모든 사람이 덜 활동적인 데이터로 클라이언트에 응답합니다.if (sendto(s, buf, recv_len, (struct 7, sockaddr*) &si_other, slen) == SOCKET_ERROR)printf(“Send() 중단, 오류 코드: %d”, WSAGetLastError());종료(EXIT_FAILURE);소켓을 닫습니다.WSACleanup();0을 반환합니다.

    위 프로그램의 범위를 지정하려면 this And 프로젝트를 vc++로 빌드하고 실행합니다. Vc++ 2010에서 새 프로젝트를 비운 다음 c에 대한 파일을 붙여넣습니다.

    Winsock 초기화 중... 초기화 중.소켓은 오랫동안 만들어졌습니다.바인딩 완료데이터를 기다리는 중...이 

    이제 netcat 애플리케이션을 사용하여 웹서버를 테스트할 수 있습니다. 여기에서 우리는 ncat으로 작업하여 netcat의 이 특정 구현을 활용할 것입니다. nmap과 함께 제공됩니다. nmap을 다운로드하여 사용하십시오. 그런 다음 우리 역에서 다음을 수행하십시오.-vv

    c:>ncat 8888Ncat: -u 로컬 변형 6.01(http://nmap.org/ncat)Ncat: 127.0.0.1:8888에 연결되었습니다.

    그래서

    Ncat tv 프로그램은 인간 회사 UDP 서버에 연결됩니다. -u 결정은 udp에 대한 것입니다. 이제 우리는 정상적인 호스팅으로 항목을 보냅니다. 이것은 ncat 터미널이며 반환됩니다.-vv

    c:>ncat 8888Ncat: -oughout localhost 버전 6.01(http://nmap.org/ncat에 연결)ncat: 127.0.0.1:8888.netstat 사용이봐이봐평화세계

    winsock udp client

    이 명령은 udp 서버를 테스트하여 슬롯 Des를 다시 여는 데 도움이 될 수 있습니다. 다음은 빠른 예입니다.

    C:>netstat -t UDP -a활성 연결  프로토 로컬 주소 외부 정렬 상태  UDP------------:microsoft-ds*:*  UDP ----------:isakmp *:*  UDP------------:1025 *:*  UDP------------:1037 *:*  ----------:1039udp *:*  UDP------------:4500 *:*  *:* UDP----------:8888 UDP----------:17500 *:*  UDP ----------:ntp *:*  UDP ----------:netbios-ns *:*  UDP ----------:netbios-dgm *:*  UDP------------:1900 *:*  UDP ----------:ntp *:*

    Reimage PC 수리 도구를 받으십시오. 다운로드를 시작하려면 여기를 클릭하십시오.

    Posted on