Android客户端:
package com.creative.SocketClient;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class SocketClientActivity extends Activity
{
// 设置服务器IP和端口
private static final String SERVERIP = "192.168.1.101";
private static final int SERVERPORT = 12345;
private static Thread _thread = null;
private Socket _socket = null;
private BufferedReader _bufferedReader = null;
private static PrintWriter _printWriter = null;
private String _message = "";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText editText = (EditText)findViewById(R.id.editText01);
Button connectBtn = (Button)findViewById(R.id.connectBtn);
Button sumbitBtn = (Button)findViewById(R.id.sumbitBtn);
// 连接服务器
connectBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
// 连接服务器
_socket = new Socket(SERVERIP, SERVERPORT);
// 取得输入/输出流
_bufferedReader = new BufferedReader(new InputStreamReader(_socket.getInputStream(), "GB2312"));
_printWriter = new PrintWriter(_socket.getOutputStream(), true);
}
catch (Exception e)
{
System.out.println("Connect is failed!");
}
}});
// 发送信息
sumbitBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
String msg = editText.getText().toString();
sendMessage(msg);
}});
_thread = new Thread(_runnable);
_thread.start();
}
// 发送信息到服务器
public void sendMessage(String message)
{
try
{
System.out.println(message);
// 发送信息给服务器
_printWriter.print(message);
_printWriter.flush();
}
catch (Exception e)
{
}
}
// 监听服务器发来的消息
private Runnable _runnable = new Runnable()
{
public void run()
{
while(true)
{
try
{
if((_message = _bufferedReader.readLine()) != null)
{
// 发送消息
_handler.sendMessage(_handler.obtainMessage());
}
}
catch (Exception e)
{
}
}
}
};
Handler _handler = new Handler()
{
public void handleMessage(Message msg)
{
super.handleMessage(msg);
// 刷新信息
try
{
// 输出接受到的数据
System.out.println(_message);
}
catch (Exception e)
{
}
}
};
}
JAVA服务器端:
package com.creative.SocketClient;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class SocketClientActivity extends Activity
{
// 设置服务器IP和端口
private static final String SERVERIP = "192.168.1.101";
private static final int SERVERPORT = 12345;
private static Thread _thread = null;
private Socket _socket = null;
private BufferedReader _bufferedReader = null;
private static PrintWriter _printWriter = null;
private String _message = "";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText editText = (EditText)findViewById(R.id.editText01);
Button connectBtn = (Button)findViewById(R.id.connectBtn);
Button sumbitBtn = (Button)findViewById(R.id.sumbitBtn);
// 连接服务器
connectBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
// 连接服务器
_socket = new Socket(SERVERIP, SERVERPORT);
// 取得输入/输出流
_bufferedReader = new BufferedReader(new InputStreamReader(_socket.getInputStream(), "GB2312"));
_printWriter = new PrintWriter(_socket.getOutputStream(), true);
}
catch (Exception e)
{
System.out.println("Connect is failed!");
}
}});
// 发送信息
sumbitBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
String msg = editText.getText().toString();
sendMessage(msg);
}});
_thread = new Thread(_runnable);
_thread.start();
}
// 发送信息到服务器
public void sendMessage(String message)
{
try
{
System.out.println(message);
// 发送信息给服务器
_printWriter.print(message);
_printWriter.flush();
}
catch (Exception e)
{
}
}
// 监听服务器发来的消息
private Runnable _runnable = new Runnable()
{
public void run()
{
while(true)
{
try
{
if((_message = _bufferedReader.readLine()) != null)
{
// 发送消息
_handler.sendMessage(_handler.obtainMessage());
}
}
catch (Exception e)
{
}
}
}
};
Handler _handler = new Handler()
{
public void handleMessage(Message msg)
{
super.handleMessage(msg);
// 刷新信息
try
{
// 输出接受到的数据
System.out.println(_message);
}
catch (Exception e)
{
}
}
};
}
.NET服务器端:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace TCPServer
{
class Program
{
static void Main(string[] args)
{
// 接收到的数据
int receive;
// 定义数据缓冲区
byte[] date = new byte[1024];
// 设置终端连接,接收任意请求的IP地址客户终端
IPEndPoint MyIpEndpoint = new IPEndPoint(IPAddress.Any, 12345);
// 新建一个服务器套接字
Socket MySocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
// 绑定服务端套接字
MySocket.Bind(MyIpEndpoint);
// 监听
MySocket.Listen(10);
Console.WriteLine("等待Android客户端程序的连接...");
// 获取客户端套接字
Socket Client = MySocket.Accept();
// 获取客户端终点
IPEndPoint ClientEndPoint = (IPEndPoint)Client.RemoteEndPoint;
// 输出连接信息
Console.WriteLine("Connect with {0} port {1}",
ClientEndPoint.Address,
ClientEndPoint.Port.ToString());
// 将要发送到客户端的信息进行编码
date = Encoding.ASCII.GetBytes("Welcome to my Server");
// 发送信息到客户端
Client.Send(date, date.Length, SocketFlags.None);
// 如果接收的信息长度为0,则自动退出循环
while (true)
{
try
{
receive = Client.Receive(date);
if (receive == 0)
{
break;
}
// 对收到的字符进行编码
string ReceiveString = Encoding.UTF8.GetString(date, 0, receive);
// 打印接受到的指令信息
Console.WriteLine(ReceiveString);
// 发送信息到客户端
Client.Send(date, receive, SocketFlags.None);
}
catch
{
}
}
Console.WriteLine("DisConnected with {0}", ClientEndPoint.Address);
Client.Close();
MySocket.Close();
}
}
}