直接奔主题,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();
				} 
		}
	
	}
	
		
}
 
posted on 2011-09-08 17:35  Jwc  阅读(502)  评论(0编辑  收藏  举报