直接奔主题,come on~!
C# 服务端
代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using System.Net; using System.Threading; namespace WindowsFormsApplication1 { public partial class Form1 : Form { Socket ssk; Socket_State ss; public Form1() { InitializeComponent(); CheckForIllegalCrossThreadCalls = false; } private void start_Click(object sender, EventArgs e) { Thread thd = new Thread(new ThreadStart(mylisten)); thd.Start(); } public void mylisten() { ssk = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); EndPoint s_en = new IPEndPoint(IPAddress.Any, 900); ssk.Bind(s_en); ssk.Listen(3); listbox1.Items.Add("侦听成功"); while (true) { //这里是同步接收 Socket client_sk = ssk.Accept(); Socket_State ss = new Socket_State(); ss.workSocket = client_sk; client_sk.BeginReceive(ss.buffer,0,Socket_State.BufferSize,SocketFlags.None,rec_endreceive,ss); } } public void rec_endreceive(IAsyncResult ar) { ss = (Socket_State)ar.AsyncState; Socket sk = ss.workSocket; int i = sk.EndReceive(ar); if (i > 0) { ss.sb.Append(Encoding.ASCII.GetString(ss.buffer, 0, i)); var content = ss.sb.ToString(); if (content.IndexOf("#EOF#") > -1) { content = content.Replace("#EOF#", "").Trim(); listbox1.Items.Add(content); Thread th1 = new Thread(new ThreadStart(message_send)); th1.Start(); } else { sk.BeginReceive(ss.buffer,0,Socket_State.BufferSize,SocketFlags.None,rec_endreceive,ss); } } } public void message_send() { Send(ss.workSocket, "successfull"); } private static void Send(Socket handler, String data) { byte[] byteData = Encoding.ASCII.GetBytes(data); handler.BeginSend(byteData, 0, byteData.Length, 0, new AsyncCallback(SendCallback), handler); } private static void SendCallback(IAsyncResult ar) { Socket handler = (Socket)ar.AsyncState; int bytesSent = handler.EndSend(ar); MessageBox.Show("成功发送"); handler.Shutdown(SocketShutdown.Both); handler.Close(); } } }
代码二:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace WindowsFormsApplication1 { class Socket_State { // Client socket. public Socket workSocket = null; // Size of receive buffer. public const int BufferSize = 1024; // Receive buffer. public byte[] buffer = new byte[BufferSize]; // Received data string. public StringBuilder sb = new StringBuilder(); } }
android 客户端
代码:
package socket_test.Jason; 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; import android.net.*; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.*; import javax.net.ssl.HandshakeCompletedListener; public class Socket_testActivity extends Activity { private EditText send_data_txt; private EditText result_data_txt; private Button submit_btn; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findAll(); bind(); } public void findAll() { send_data_txt=(EditText) this.findViewById(R.id.send_date_txt); result_data_txt=(EditText) this.findViewById(R.id.result_data_txt); submit_btn=(Button) this.findViewById(R.id.submit_btn); } public void bind() { submit_btn.setOnClickListener(mylistener); } Handler hd=new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub //super.handleMessage(msg); if(msg.what==123) { result_data_txt.setText(msg.obj.toString()); } } }; private View.OnClickListener mylistener=new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(v.getId()==R.id.submit_btn) { Thread thd=new Thread(new send_message()); thd.start(); } } }; class send_message implements Runnable { @Override public void run() { // TODO Auto-generated method stub try { String mesg=send_data_txt.getText().toString()+"#EOF#"; Socket sk=new Socket("192.168.1.202", 900); //向服务器发送信息 PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(sk.getOutputStream())),true); String haha= new String(mesg.getBytes(),"ASCII"); out.println(mesg); //接受服务器的信息 InputStream is=sk.getInputStream(); byte[] bytestring= new byte[1024]; String jason1=null; while(is.read(bytestring, 0, bytestring.length)!=-1) { String jason2=new String(bytestring,"ASCII"); jason1+=jason2; } jason1=jason1.replace("null", "").trim(); Message msg=hd.obtainMessage(123, jason1); hd.sendMessage(msg); is.close(); out.close(); sk.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }