0

私のサーバーでは、( "number:%d \ n"、i)の無限サイクルをソケットに送信します。そして、各サイクルで、私は数を1つ増やします。次に、次のコードを使用して、Androidデバイス(TCPクライアント)で受信します。while(接続済み){

            //receive data through socket  
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            Log.d(TAG, "1");

             while(connected){              

            //receive data through socket  
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            Log.d(TAG, "1");

             while ( (line = in.readLine()) != null){

                   Log.d(TAG, line);
                   str.append(line);
                   Log.d(TAG, "2");

                   runOnUiThread(new Runnable() {

                    @Override
                    public void run() {

                        input.setText( str );

                }});

             }


        }

これはlogcatの結果です:

r:25363332´┐¢番号:3405er:3839er:4201er:4925´┐¢番号:55776228´┐¢番号:6301´┐¢番号:7265´┐¢番号:8351番号:9170番号:9414番号:97765102101057 210934er:11079er:11441 ´┐¢番号:1173112020´┐¢番号:12093´┐¢番号:12455番号:12672er:13491´┐¢番号:13903er:14337er:14699´┐¢番号:15351´┐¢番号:15713er:1614716364´┐¢番号:1643716726´┐¢番号:16799番号:17016番号:173787´┐¢番号:17885番号:187047´┐¢番号:19695er:201291´┐¢番号:20419´┐¢番号:20781´┐番号:21143er:21215er :2157721794´┐¢番号:21867er:2230122518nアンバー:22808er:2362724446´┐¢番号:25125er:2555926378727948´┐¢番号:28383er:284557番号:28600286729番号:2896229396er:295413´┐¢番号:30433番号:3

したがって、これは\ nを認識しておらず、ソケットの読み取りの間にデータが失われています。UIスレッドが絶えず実現されているからですか?

代わりにこれをどのように行う必要がありますか?

アップデート

これはCのサーバーコードです:

 int main(int argc, char **argv)
 {

socklen_t client_len;
struct sockaddr_in cli_addr;
struct sockaddr_in serv_addr;
int client_count=0;
int nbytes, i, sockfd, new_sockfd;
char buf[20];

/* Init socket */   
sockfd=socket(AF_INET, SOCK_STREAM, 0);     
if (sockfd<0) error("ERROR opening socket");
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons( atoi(argv[1]) );

/*associate socket to the port*/
if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) error("ERROR on binding");

/* connection to the client */
listen(sockfd, 1); /*server is ready to receive connections*/
client_len = sizeof(cli_addr);
new_sockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &client_len); /*server accepts request */
client_count =1; /*write to socket when client is available*/   

i = 1;

while(1){


    sprintf(buf, "number: %d\n", i); 

    if (client_count >0){
        nbytes = write( new_sockfd, buf, sizeof(buf)); /* write to socket */
        if(nbytes<0){
            printf("ERROR on sendto");
        }
    }

    i = i+1;
}   

return (0); 

}

4

0 に答える 0