0

这是我在 C# 127.0.0.1 中的服务器,端口为 4444

    using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;


public class serv
{
    public static void Main()
    {
        try
        {
            IPAddress ipAd = IPAddress.Parse("127.0.0.1");
            // use local m/c IP address, and 

            // use the same in the client


            /* Initializes the Listener */
            TcpListener myList = new TcpListener(ipAd, 4444);

            /* Start Listeneting at the specified port */
            myList.Start();

            Console.WriteLine("The server is running at port 4444...");
            Console.WriteLine("The local End point is: " +
                              myList.LocalEndpoint);
            Console.WriteLine("Waiting for a connection.....");
        m:
            Socket s = myList.AcceptSocket();
            Console.WriteLine("Connection accepted from " + s.RemoteEndPoint);

            byte[] b = new byte[100];
            int k = s.Receive(b);

            char cc = ' ';
            string test = null;
            Console.WriteLine("Recieved...");
            for (int i = 0; i < k - 1; i++)
            {
                Console.Write(Convert.ToChar(b[i]));
                cc = Convert.ToChar(b[i]);
                test += cc.ToString();
            }

            switch (test)
            {
                case "1":
                    break;


            }

            ASCIIEncoding asen = new ASCIIEncoding();
            s.Send(asen.GetBytes("The string was recieved by the server."));
            s.Close();
            Console.WriteLine("\nSent Acknowledgement");


            /* clean up */
            goto m;
            myList.Stop();
            Console.ReadLine();

        }
        catch (Exception e)
        {
            Console.WriteLine("Error..... " + e.StackTrace);
        }
    }

}

这是我在 JAVA 中的 android(客户端)代码

package com.example.aclient;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;



public class MainActivity extends Activity {
     private Socket client;
     private PrintWriter printwriter;
     private EditText textField;
     private Button button;
     private String messsage;

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

      textField = (EditText) findViewById(R.id.editText1); //reference to the text field
      button = (Button) findViewById(R.id.button1);   //reference to the send button

      //Button press event listener
      button.setOnClickListener(new View.OnClickListener() {

       public void onClick(View v) {

        messsage = textField.getText().toString(); //get the text message on the text field
        textField.setText("");      //Reset the text field to blank

        try {

         client = new Socket("127.0.0.1", 4444);  //connect to server
         printwriter = new PrintWriter(client.getOutputStream(),true);
         printwriter.write(messsage);  //write the message to output stream

         printwriter.flush();
         printwriter.close();
         client.close();   //closing the connection

        } catch (UnknownHostException e) {
         e.printStackTrace();
        } catch (IOException e) {
         e.printStackTrace();
        }
       }
      });

     }
    }

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world" />

    <EditText
         android:inputType="text"
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="47dp"
        android:layout_toLeftOf="@+id/textView1"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/editText1"
        android:layout_marginLeft="18dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="Button" />

</RelativeLayout>

为什么 C# 上的服务器无法识别 android 客户端?我不知道如何将 C# 服务器与 android 客户端连接起来??这是我的第一台服务器,我对服务器不太了解..所以请帮助我!

4

2 回答 2

3

127.0.0.1localhost,你自己的机器。如果您在本地 PC 上使用 C# 托管服务器,并且您有一个看起来很像 Android 的 Java 应用程序,它肯定在另一台机器(您的手机、平板电脑或模拟手机或平板电脑)上运行,而不是同一台机器。您需要使用两台机器都知道并且两台机器都追溯到同一个物理框的 IP 地址进行通信。

在您的 PC 上,127.0.0.1就是您的 PC。在您的平板电脑上,127.0.0.1是您的平板电脑,而不是您的 PC。

在您的网络中查找您的 PC 的 IP(如果您正在运行 Windows,请在控制台中输入 ipconfig)并使用它。确保在部署时使用公共 IP。

于 2013-07-09T15:04:03.053 回答
1

您必须使用 10.0.2.2,因为您将使用模拟器,localhost 指的是模拟设备而不是机器

于 2013-07-09T15:04:06.667 回答