第三篇 (.net socket 与 android )
16lz
2021-01-23
直接奔主题,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() {@Overridepublic 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() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(v.getId()==R.id.submit_btn){ Thread thd=new Thread(new send_message()); thd.start();}}};class send_message implements Runnable{@Overridepublic 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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} }}}
更多相关文章
- 《第一行代码--Android》 Git时间
- android 笔记 --- Android-图片透明度处理代码
- android时间对话框的核心代码
- Android 代码实现按钮 按下弹起事件
- android post方式传递参数并获取返回数据代码
- Android 再按一次返回键退出 代码
- Android设备的显示信息
- Android中发短信的代码
- android studio 代码混淆