uju's Tech

[C: Socket] 소켓 통신을 이용한 구조체 전송 본문

Programming/C 언어 이모저모

[C: Socket] 소켓 통신을 이용한 구조체 전송

ujusy 2020. 7. 29. 00:56

<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>

 

소켓 통신을 할 때 ip, host, port 가 무엇인지 client가 접속하면 알려주고 싶었다.

 

처음에는 각각을 send함수를 통해 전달하였으나 문제점이 발생하였다.

 

TCP Stream으로 send를 한 번에 여러개 받아들이지 못하여 가장 처음에 받은 데이터만 받는 상황이었다.

 

구체적으로 send를 3번 recv를 3번 사용해 주었으나 동일하게 첫 번째 send만 전달이 되었다.

 

그래서 구조체를 한 번에 통신을 진행하고자 한다.

(구글링을 해도 구조체 전송이 나오지 않아 애 먹었다. ㅎ..)


먼저 구조체를 선언해 주자..

struct SendPacket{
    char ip[1000];
    char host[1000];
    char port[256];
};

구조체를 전송하자.(Server.c)

if (send(ns,(struct SendPacket*)&sPacket,sizeof(sPacket),0)  == -1) {
          perror("send");
          exit(1);
      }

구조체 받자.(Client.c)

GetSize = recv(sd,(struct SendPacket*)&sPacket,sizeof(sPacket),0);

 

전체 코드를 보고싶다면 아래의 github으로!

 

https://github.com/ujusy/C_Socket_

 

ujusy/C_Socket_

Contribute to ujusy/C_Socket_ development by creating an account on GitHub.

github.com

 

Comments