로 놓고 소켓통신을 하려고 합니다.
가장 기본적인 Echo Server/Client로 하구있구요
(클라이언트가 서버에 메시지를 보내면
서버는 다시 클라이언트에게 그 메세지를 메아리처럼 보내는 프로그램)
서버 실행후 클라이언트를 실행 했을 때
클라이언트에서 커넥션에러가 발생하면서 연결이 안되더라구요
왜 연결이 안되는지 모르겠습니다.
어디에 문제가 있는걸까요
리눅스 Server Code
#include <sys/socket.h>#include <sys/stat.h>#include <arpa/inet.h>#include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include "unp.h"#define MAXBUF 4096 // make length with server and client//int main(int argc, char **argv)intmain(intargc,char*argv[]){intserver_sockfd,client_sockfd;intclient_len,n;charbuf[MAXBUF];structsockaddr_inclientaddr,serveraddr;client_len=sizeof(clientaddr);if((server_sockfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==-1){perror("socket error : ");exit(0);}memset(&serveraddr,0X00,sizeof(serveraddr));serveraddr.sin_family=AF_INET;serveraddr.sin_addr.s_addr=htonl(INADDR_ANY);serveraddr.sin_port=htons(SERV_PORT);bind(server_sockfd,(structsockaddr*)&serveraddr,sizeof(serveraddr));listen(server_sockfd,5);while(1){memset(buf,0X00,MAXBUF);client_sockfd=accept(server_sockfd,(structsockaddr*)&clientaddr,&client_len);printf(" New Client Connect: %s\n",inet_ntoa(clientaddr.sin_addr));if((n=read(client_sockfd,buf,MAXBUF))<0){close(client_sockfd);continue;}if(write(client_sockfd,buf,MAXBUF)<0){perror("write error :");close(client_sockfd);}close(client_sockfd);}close(server_sockfd);return0;}
Window Client Code
#include<stdio.h>#include<winsock2.h>// Window Client version #define PORT 3500#define IP "127.0.0.1"voidmain(void){WSADATAWSAData;SOCKADDR_INaddr;SOCKETs;charbuffer[4096];intreadbytes;inti,len;if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0){return1;}s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(s==INVALID_SOCKET){return1;}addr.sin_family=AF_INET;addr.sin_port=htons(PORT);addr.sin_addr.S_un.S_addr=inet_addr(IP);if(connect(s,(structsockaddr*)&addr,sizeof(addr))==SOCKET_ERROR){printf("fail to connect\n");closesocket(s);return1;}printf("enter messages\n");for(i=0;1;i++){buffer[i]=getchar();if(buffer[i]=='\n'){buffer[i++]='\n';break;}}len=i;printf("send messages(%d bytes)\n",len);send(s,buffer,len,0);for(readbytes=0;readbytes<len;)readbytes+=recv(s,buffer+readbytes,len-readbytes,0);printf("recv messages = %s\n",buffer);closesocket(s);WSACleanup();return0;}
hminkoo92
질문
서버 : 리눅스
클라이언트 : 윈도우
로 놓고 소켓통신을 하려고 합니다.
가장 기본적인 Echo Server/Client로 하구있구요
(클라이언트가 서버에 메시지를 보내면
서버는 다시 클라이언트에게 그 메세지를 메아리처럼 보내는 프로그램)
서버 실행후 클라이언트를 실행 했을 때
클라이언트에서 커넥션에러가 발생하면서 연결이 안되더라구요
왜 연결이 안되는지 모르겠습니다.
어디에 문제가 있는걸까요
리눅스 Server Code
Window Client Code
8년 전