윈도우와 리눅스 사이의 소켓 통신 hminkoo92 질문 서버 : 리눅스 클라이언트 : 윈도우 로 놓고 소켓통신을 하려고 합니다. 가장 기본적인 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) int main(int argc, char *argv[]) { int server_sockfd, client_sockfd; int client_len, n; char buf[MAXBUF]; struct sockaddr_in clientaddr, 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, (struct sockaddr *)&serveraddr, sizeof(serveraddr)); listen(server_sockfd, 5); while(1) { memset(buf,0X00,MAXBUF); client_sockfd = accept(server_sockfd, (struct sockaddr *)&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); return 0; } Window Client Code #include<stdio.h> #include<winsock2.h> // Window Client version #define PORT 3500 #define IP "127.0.0.1" void main(void) { WSADATA WSAData; SOCKADDR_IN addr; SOCKET s; char buffer[4096]; int readbytes; int i, len; if (WSAStartup(MAKEWORD(2, 2), &WSAData) != 0) { return 1; } s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (s == INVALID_SOCKET) { return 1; } addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.S_un.S_addr = inet_addr(IP); if (connect(s, (struct sockaddr *)&addr, sizeof(addr)) == SOCKET_ERROR) { printf("fail to connect\n"); closesocket(s); return 1; } 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(); return 0; } 10년 전
1개의 댓글이 있습니다. JongMan 이 질문은 이 사이트의 주제와 상관이 없는 것 같네요. 다른 프로그래밍 포럼에 질문하시길 추천드립니다. 10년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
hminkoo92
질문
서버 : 리눅스
클라이언트 : 윈도우
로 놓고 소켓통신을 하려고 합니다.
가장 기본적인 Echo Server/Client로 하구있구요
(클라이언트가 서버에 메시지를 보내면
서버는 다시 클라이언트에게 그 메세지를 메아리처럼 보내는 프로그램)
서버 실행후 클라이언트를 실행 했을 때
클라이언트에서 커넥션에러가 발생하면서 연결이 안되더라구요
왜 연결이 안되는지 모르겠습니다.
어디에 문제가 있는걸까요
리눅스 Server Code
Window Client Code
10년 전