[소켓] 윈도우 리눅스 tcp/ip연결 도와주세요!!!!

kei lina의 이미지

윈도우 client와 리눅스 server간 tcp / ip 를 통한 문자열 전송프로그램을 생성하는 것이 목표입니다.
하지만 리눅스 서버에서 listen 까지는 진행이 되는데 윈도우 client에서 프로그램을 실행해도 리눅스 서버의 프로그램에서 accept로 진행이 되지 않네요 ㅠㅠ
리눅스 server ip = 192.168.57.146 입니다.

//리눅스 server=================================================================================
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
 
#define BUFF_SIZE 1024
 
int main(){
	int server_socket;
	int client_socket;
	int client_addr_size;
 
	struct sockaddr_in server_addr;
	struct sockaddr_in client_addr;
 
	char buff_rcv[BUFF_SIZE+5];
	char buff_snd[BUFF_SIZE+5];
 
	server_socket=socket(PF_INET,SOCK_STREAM,0);
 
	memset(&server_addr,0,sizeof(server_addr));
	server_addr.sin_family = AF_INET;
	server_addr.sin_port = htons(4000);
	server_addr.sin_addr.s_addr = inet_addr("192.168.57.146");
 
	bind(server_socket,(struct sockaddr*)&server_addr,sizeof(server_addr));	
 
	printf("bind okay\n");
 
	listen(server_socket,5);
	printf("listen okay\n");
 
	client_addr_size = sizeof(client_addr);
	client_socket = accept(server_socket,(struct sockaddr*)&client_addr,(socklen_t*)&client_addr_size);
 
	printf("accept okay\n");
 
	if(-1==client_socket){
		printf("client connect error\n");
		exit(1);
	}
 
	read(client_socket,buff_rcv,BUFF_SIZE);
	printf("receive: %s\n",buff_rcv);
 
	close(client_socket);
 
}

//윈도우 client===========================================================================
#define	_WINSOCK_DEPRECATED_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#pragma comment(lib, "ws2_32.lib")
#include <winsock2.h>
#include <stdio.h>
#include<time.h>
#include<string.h>
 
int main() {
 
	SOCKADDR_IN serveraddr;
	WSADATA wsa;
	int client_len;
	char buf[1024];
 
	WSAStartup(MAKEWORD(2, 2), &wsa);
 
	SOCKET s;
	s = socket(AF_INET, SOCK_DGRAM, 0);
	if (s == INVALID_SOCKET) {
		printf("socket error!\n");
		return -1;
	}
 
	serveraddr.sin_addr.s_addr = inet_addr("192.168.57.146");
	serveraddr.sin_port = htons(4000);
	serveraddr.sin_family = AF_INET;
 
	connect(s, (SOCKADDR *)&serveraddr, sizeof(serveraddr));
 
	memset(buf, 0, sizeof(buf));
 
	printf("보낼 내용 입력 : ");
	scanf("%s", buf);
 
	send(s, buf, strlen(buf), 0);
 
 
 
 
	closesocket(s);
 
	WSACleanup();
 
	return 0;
}

익명 사용자의 이미지

코드는 대충 봤는데 문제 없는 것 같군요. 아마도요.

네트워크 프로그래밍의 troubleshooting은 좀 골치가 아픈 편인데, 왜냐하면 네트워크 프로그래밍이란 두 어플리케이션이 마법처럼 그냥 연결되는 것이 아니라 그 사이에 수많은 소프트웨어/하드웨어가 관여하고 있기 때문이지요. 그리고 그 중 어디에서든 뭔가 잘못 설정되어 있을 수 있습니다.

직접 현장에 가서 좀 조사해 보면 간단히 해결될 문제일 수도 아닐 수도 있지요.

가장 있을법한 원인을 예로 들어 본다면...

1. 192.168.57.146라는 ip로 서버에 접근이 가능한 건 맞나요? 내부 네트워크용 ip로 보이는군요. 서버와 클라이언트가 같은 서브 네트워크에 있는 게 맞는지 확인해보시고, 만약 그렇지 않다면 클라이언트가 서버에 접속하기 위해 적절한 설정이 필요할 수도 있습니다. 포트 포워딩이라던가.

2. 해당 ip로 접근이 가능한데도 접속이 안 된다면, 그 다음으로 체크해 볼 만한 건 방화벽입니다. 이 경우엔 서버 쪽에 tcp 포트의 화이트리스트를 관리하는 방화벽이 있을 가능성이 높아요. 혹시 우분투 쓰시면 ufw 찾아보시길. 물론 클라이언트의 방화벽 문제일 수도 있습니다.

zooloo의 이미지

뭔가 좀 빠진거 같습니다
인터넷에서 다른 소스 찾아보고 참고하면 해결될거 같습니다
그리고, 보통의 경우 보낼내용 입력받은 다음에 소켓을 엽니다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.