tcp/ip 예제

6Gelemen의 이미지

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
void error_handling(char *message);
 
int main(int argc, char *argv[])
{
  int serv_sock;
  int clnt_sock;
 
  struct sockaddr_in serv_addr;
  struct sockaddr_in clnt_addr;
  socklen_t clnt_addr_size;
 
  char message[]="Hello World!";
 
  if(argc!=2)
  {
  printf("Usage : %s <port>\n",argv[0]);
  exit(1);
  }
 
  serv_sock=socket(PF_INET, SOCK_STREAM,0);
  if(serv_sock == -1)
    error_handling("socket() error");
 
  memset(&serv_addr,0,sizeof(serv_addr));
  serv_addr.sin_family=AF_INET;
  serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
  serv_addr.sin_port=htons(atoi(argv[1]));
 
  if(bind(serv_sock, (struct sockaddr*) &serv_addr, sizeof(serv_addr))== -1)
    error_handling("bind() error");
 
  if(listen(serv_sock, 5)==-1)
    error_handling("listen() error");
 
  clnt_addr_size=sizeof(clnt_addr);
  clnt_sock=accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size):
  if(clnt_sock==-1)
    error_handling("accept() error");
 
  write(clnt_sock, message, sizeof(message));
  close(clnt_sock);
  close(serv_sock);
  return 0;
}
 
void error_handling(char *message)
{
  fputs(message,stderr);
  fputc('\n',stderr);
  exit(1);
}

에서 따라적기만 하는데 오류가 발생하네요...
미륵의 이미지

관심법으로 가만히 보니 코드 속에 마구니가 가득하군요.

마구니를 때려 죽이면 코드가 정상적으로 동작할 것입니다.

궁ㅇㅖㅆㅡㅂㅏㄹㅏㅅㅣ의 이미지

누군가 누가 지금 웃었어.. 누가 웃었냐 이말이다!!

익명 사용자의 이미지

  clnt_sock=accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size):

  clnt_sock=accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size);