C#tcpサーバ側+Android TCPクライアント-簡単な例
6198 ワード
すべてネット上で探した簡単な例で、自分の望む機能を実現します.残しておく.
C#:サーバ側、簡単にTcpListenerを使用:
static void Main(string[]args){TcpListener server=null;Console.Write(「リスニングのポート番号を入力してください:」);string strPort=Console.ReadLine();try{int port=Convert.ToInt 32(strPort); IPEndPoint listenPort = new IPEndPoint(IPAddress.Any, port); server = new TcpListener(listenPort);//TcpListenerの新しいインスタンスserverを初期化する.Start();//クライアントの要求をリスニングし始めるByte[]bytes=new Byte[256];//読み込まれたデータString data=nullをキャッシュします.while(true)//ループリスニング{Console.Write("サービス開始済み");TcpClient client=server.AcceptTcpClient();Console.WriteLine("接続済み!"); data = null; NetworkStream stream = client.GetStream();//読み出しおよび書き込みのためのストリームオブジェクトint iを取得する. while ((i = stream.Read(bytes, 0, bytes.Length)) != 0){//借宿バイトのデータをUTF 8文字列data=System.Text.Encoding.UTF 8.GetString(bytes,0,i);Console.WriteLine("受信メッセージ:{0},data); Console.Write(「メッセージの送信:」); data = Console.ReadLine();//サーバはメッセージbyte[]msg=Systemを送信する.Text.Encoding.UTF8.GetBytes(data); stream.Write(msg, 0, msg.Length); } client.Close(); } } catch (Exception e) { Console.WriteLine(e.Message); } finally { server.Stop(); } Console.WriteLine(「任意のキーを押して終了...」); }
Android:
アクセス権の付与:
シンプルなレイアウト:
C#:サーバ側、簡単にTcpListenerを使用:
static void Main(string[]args){TcpListener server=null;Console.Write(「リスニングのポート番号を入力してください:」);string strPort=Console.ReadLine();try{int port=Convert.ToInt 32(strPort); IPEndPoint listenPort = new IPEndPoint(IPAddress.Any, port); server = new TcpListener(listenPort);//TcpListenerの新しいインスタンスserverを初期化する.Start();//クライアントの要求をリスニングし始めるByte[]bytes=new Byte[256];//読み込まれたデータString data=nullをキャッシュします.while(true)//ループリスニング{Console.Write("サービス開始済み");TcpClient client=server.AcceptTcpClient();Console.WriteLine("接続済み!"); data = null; NetworkStream stream = client.GetStream();//読み出しおよび書き込みのためのストリームオブジェクトint iを取得する. while ((i = stream.Read(bytes, 0, bytes.Length)) != 0){//借宿バイトのデータをUTF 8文字列data=System.Text.Encoding.UTF 8.GetString(bytes,0,i);Console.WriteLine("受信メッセージ:{0},data); Console.Write(「メッセージの送信:」); data = Console.ReadLine();//サーバはメッセージbyte[]msg=Systemを送信する.Text.Encoding.UTF8.GetBytes(data); stream.Write(msg, 0, msg.Length); } client.Close(); } } catch (Exception e) { Console.WriteLine(e.Message); } finally { server.Stop(); } Console.WriteLine(「任意のキーを押して終了...」); }
Android:
アクセス権の付与:
シンプルなレイアウト:
MainActivity:
public class MainActivity extends AppCompatActivity {
Button connect ;
Button send;
EditText msg;
String sendData = "";
boolean RD = false;//
OutputStream OutputStream = null; // ,
InputStream InputStream = null; // ,
Socket Socket = null;//Socket
String TAG = "TCPtest";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
connect = findViewById(R.id.connectBtn);
send = findViewById(R.id.sendBtn);
msg = findViewById(R.id.editText);
connect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Connect_Thread Connect_thread = new Connect_Thread(); // , socket
Connect_thread.start();
Log.d(TAG, " ");
}
});
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendData = msg.getText().toString();
ThreadSendData t2 = new ThreadSendData(); // ,
t2.start();
}
});
}
class Connect_Thread extends Thread // Socket
{
public void run()
{
try {
if (Socket == null) // socket ,
{
Socket = new Socket("192.168.1.100", 2029);; // socket socket
InputStream = Socket.getInputStream();// socket
OutputStream = Socket.getOutputStream();
ThreadReadData t1 = new ThreadReadData();//
t1.start();
}
}
catch (Exception e) //
{
e.printStackTrace();
}
}
}
class ThreadReadData extends Thread //
{
public void run()
{
String textdata; //
while (RD) // RD
{
try
{
final byte[] ReadBuffer = new byte[2048]; // , , 2048
final int ReadBufferLengh; //
//
//ReadBuffer ,
//
ReadBufferLengh = InputStream.read(ReadBuffer);
if (ReadBufferLengh == -1) // , -1
{
RD = false;//
Socket.close();
Socket = null;
Log.d(TAG, "run: ");
} else {
//
textdata = new String(ReadBuffer,0,ReadBufferLengh,"GB2312");//
Log.d(TAG,new String(textdata.getBytes(),"UTF-8"));// UTF-8
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}
}
class ThreadSendData extends Thread //
{
public void run()
{
try
{
OutputStream.write(sendData.getBytes()); //
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}