마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 소켓 통신 질문드립니다(이미지첨부)

0 추천
TCP_Client.java

package com.example.prototype;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

import socket.client.R; // Q. 이부분 맞게 추가 한건가요?


import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
 
public class TCP_Client extends Activity {
 
    private String html = "";
    private Handler mHandler;
 
    private Socket socket;
 
    private BufferedReader networkReader;
    private BufferedWriter networkWriter;
 
    private String ip = "192.168.123.100"; // IP
    private int port = 9999; // PORT번호
 
    @Override
    protected void onStop() {
        super.onStop();
        try {
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mHandler = new Handler();
 
        try {
            setSocket(ip, port);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
 
        checkUpdate.start();
 
        final EditText et = (EditText) findViewById(R.id.EditText01);
        Button btn = (Button) findViewById(R.id.Button01);
        final TextView tv = (TextView) findViewById(R.id.TextView01);
 
        btn.setOnClickListener(new OnClickListener() {
 
            public void onClick(View v) {
                if (et.getText().toString() != null || !et.getText().toString().equals("")) {
                    PrintWriter out = new PrintWriter(networkWriter, true);
                    String return_msg = et.getText().toString();
                    out.println(return_msg);
                }
            }
        });
    }
 
    private Thread checkUpdate = new Thread() {
 
        public void run() {
            try {
                String line;
                Log.w("ChattingStart", "Start Thread");
                while (true) {
                    Log.w("Chatting is running", "chatting is running");
                    line = networkReader.readLine();
                    html = line;
                    mHandler.post(showUpdate);
                }
            } catch (Exception e) {
 
            }
        }
    };
 
    private Runnable showUpdate = new Runnable() {
 
        public void run() {
            Toast.makeText(TCP_Client.this, "Coming word: " + html, Toast.LENGTH_SHORT).show();
        }
 
    };
 
    public void setSocket(String ip, int port) throws IOException {
 
        try {
            socket = new Socket(ip, port);
            networkWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            networkReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        } catch (IOException e) {
            System.out.println(e);
            e.printStackTrace();
        }
 
    }
 
}



 

일단 소스에 오류가 없는데 실행했을시 멈췄다는 메시지가 출력되고 꺼집니다.

TCP_Client.java에 import socket.client.R; 이부분이 맞는 부분인가요?

 

안되는 이유가 혹시 뭔지 아시는분 계시나요? ㅠㅠㅠㅠㅠㅠㅠ

 

단말기 연결해서도 실행해봤는데 안됩니다.ㅠㅠㅠㅠ

 

제가 클라이언트랑 서버 아이피를 같이 잡아서 그런건가요?

 

실행되게 하려면 어떻게 해야 하나요?

 

크리에이션 (220 포인트) 님이 2014년 9월 17일 질문

1개의 답변

0 추천

이 프로그램은 클라이언트네요

아이피 100번 서버쪽 프로그램이 실행되어 있으면 정상동작할거 같은데요

자기 자신을 서버로 잡아서 서버 실행하고 클라이언트도 같이 실행해도 됩니다

한개 프로그램으로 서버와 클라이언트 프로그램을 짜도 동작 하구요

 

그런데 질문내용을 보니깐 tcp 통신을 거의 처음하시는거 같아요

인터넷을 통해서 강좌를 더 보고 하시거나 개인교습 의뢰해서 조금 받고 하시는게 나을듯해요

 

네이트온이나 메일 주시면 기본적인 교습은 가능합니다

doridori2013@nate.com

익명사용자 님이 2014년 9월 18일 답변
...