서버와 클라이언트의 소켓통신을 하려는데요

문제점이 있어 글을 올리게 되었습니다.

pc환경에서 서버(c)와 클라(JAVA) 소켓통신은 글자가 깨지긴 하여도 데이터의 송수신이 되는걸 확인 하였는데,

문제는 서버(pc,c)와 클라(android)간 소켓통신이 안된다는 것입니다.

 

구글에서 예제소스파일을 참조해 코딩하였고, 아이피와 포트까지 맞춰서 넘겨줫구요, 퍼미션도 주었습니다.

디버깅으로 확인 하려고 해도, 클라이언트 Socket s = new Socket(IP,PORT); << 이 부분에서 무한 루프 빠져 헤어나오질 않습니다;

도대체 다른 문제가 무었인지 감이 도저히 잡히질 않네요;

제 폰은 갤럭시s2이며, wifi , 3G모두 해봣는데 똑같이 되질 않네요;;

 

--------------------server (pc,c)-----------------------------------------

#include <WinSock2.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BUFFSIZE 1024

void ErrorHandling(char* message);

int main(int argc, char *argv[])
{
 // 소켓의 버전을 관리하는 구조체.
 WSAData  wsaData;
 // 소켓
 SOCKET  hServSock;
 SOCKET  hClntSock;
 // IPv4의 주소 체계를 나타내는 구조체
 SOCKADDR_IN servAddr;
 SOCKADDR_IN clntAddr;

 int strLen;
 int szClntAddr;
 int clntAddrSize = 0;

 char message[] = "Hello World!\n";

 if (argc != 2)
 {
  printf("usage : %s <port>\n",argv[0]);
  exit(1);
 }
 
 if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
 {
  ErrorHandling("WSAStartup() error!!");
 }

 //  주소체계, 16비트 tcp ip, 32비트 IPv4주소
 hServSock = socket(PF_INET, SOCK_STREAM, 0); // 서버 소켓 생성.

 if (hServSock == INVALID_SOCKET)
 {
  ErrorHandling("socket() error!!");
 }

 memset(&servAddr,0,sizeof(servAddr));

 // 데이터 전송방식을 IPv4로 지정.
 servAddr.sin_family   = AF_INET;
 // 32bit IPv4 할당 하는 부분..
 // INADDR_ANY : 내 컴퓨터에 할당된 IP를 자동적으로 찾아줌.
 servAddr.sin_addr.s_addr = inet_addr("165.229.189.160");
 // 포트 설정..
 servAddr.sin_port   = htons(5777);//htons(atoi(argv[1]));

 // 왜 포트 설정과  ip설정 하는 부분에서 데이터의 변환이 필요한가?

 if( bind(hServSock, (SOCKADDR*)&servAddr,
  sizeof(servAddr)) == SOCKET_ERROR)
 {
  ErrorHandling("bind() error!!"); 
 }

 printf("bind() Check!\n");

 if( listen(hServSock,5) == SOCKET_ERROR)
 {
  ErrorHandling("listen() error!!");   
 }

 printf("Listen() Check!\n");

 szClntAddr = sizeof(clntAddr);

 while(1)
 {
  printf("accept start!!\n");
  hClntSock = accept(hServSock, (SOCKADDR*)&clntAddr, &szClntAddr);

  printf("client connect!!\n");


  if ( hClntSock == INVALID_SOCKET)
  {
   ErrorHandling("accept() error!!");
  }

  // message loop
  while( (strLen = recv(hClntSock,message,BUFFSIZE,0)) != 0)
  { 
   printf("%s\n",message);
   send(hClntSock,message,strLen,0);
   
  }

  // 소켓 종료..
  closesocket(hClntSock);

 }

  WSACleanup();

 return 0;


}

void ErrorHandling(char* message)
{
 fputs(message,stderr);
 fputc('\n',stderr);
 exit(1);
}


 

--------------Client (android, java)--------------------------

package com.example.client_test;

import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

import android.os.AsyncTask;
import android.util.Log;

public class TCP_Client extends AsyncTask{
 
 protected static String SERV_IP  = "165.229.189.160";
 protected static int    PORT  = 5777;
 
 @Override
 protected Object doInBackground(Object... params) {
  // TODO Auto-generated method stub
  
  try {
   InetAddress serverAddr = InetAddress.getByName(SERV_IP);
   Log.d("TCP","socket open");
   Socket sock = new Socket(serverAddr,PORT);
   Log.d("TCP","Checking!");
   //Toast.makeText(params.getClass(), "connect!!", 0).show();
   
  } catch (UnknownHostException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch(IOException e){
   e.printStackTrace();
  }
  
  return null;
 }

}



따로 익셉션이나 에러가 발생하는게 아니니;;; 문제를 종잡을 수 없네요;;

너무 무지해서 모르는건지 정말 뭔가 중요한걸 빠뜨린건지...

조언 부탁드립니다...