直接奔主题,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();
}
}
}
}
浙公网安备 33010602011771号