TCP客户端发送文本框里的内容到 服务器(esp8266无线模块)
代码是这样的,但为什么服务器那边收不到
不知道哪里出了问题,可以帮忙解答一下吗
public void Send_onClick(View v) {
try
{
outputStream = socket.getOutputStream();
outputStream.write(MsgEditText.getText().toString().getBytes());
//outputStream.write("0".getBytes());
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
还有就是如果有几个文本框的内容要分别发送出去代码应该怎么写。
我是学电的,没学过代码,对这方面一窍不通,希望大神帮忙。
你用标准设备试一下不就知道代码是不是ok的了,然后再测试该设备。
设备已经测试过了,是正常的,所以问题应该是出在代码这里。
@JUATHUA:
var client = new System.Net.Sockets.TcpClient(); var host = "----{}----"; client.Connect($"{host}", 80); //System.Text.Encoding.UTF8.GetBytes() var requestContent = new System.Text.StringBuilder(); requestContent.Append("GET /api_1.0/user_trigger?opr=501&uid=223528450&token=eydQaWNVcmwnOiAnaHR0cDovLzEyMC43Ny4xNTcuMTQ0L2ltYWdlcy9hdmF0YXIucG5nJywgJ05hbWUnOiAn6ICB6JKLJywgJ1RlbCc6ICcxODUwMjMxOTgyMCcsICdzdGF0dXMnOiAnVVNFUl9TVEFUVVNfRU5BQkxFJywgJ0lkJzogMywgJ0N1cnJlbnRTeXNUaW1lJzogMTUzNDEzMTEyOSwgJ2V0JzogMTUzNDIxNzUyOX0%3d.eydiJzogJzQ0YjJlMWM4LTI4YWEtNDQ3Yy1hMjMxLTAwODlhZTdlYjE5ZScsICdhJzogJzcyNDg0NTc3LTA1ZjktNGVlNC1iYWQwLWI5MTVkNDcyNWU0OSd9.b883b3cfd56a10953b21e85537e92904 HTTP/1.1"); requestContent.Append(Environment.NewLine); requestContent.Append("Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml"); requestContent.Append(Environment.NewLine); requestContent.Append("User-Agent: Lance/tcp"); requestContent.Append(Environment.NewLine); requestContent.Append($"Host: {host}"); requestContent.Append(Environment.NewLine); requestContent.Append(Environment.NewLine); var buffer = System.Text.Encoding.UTF8.GetBytes(requestContent.ToString()); client.GetStream().Write(buffer, 0, buffer.Length); using (var stream = client.GetStream()) { var reader = new StreamReader(stream); Console.Write(reader.ReadToEnd()); } client.Close();
代码很简单,给你个范例,一个测试脚本,肯定是对的,自己改host
@JUATHUA: 你这代码,咋java不像java,c#不像c#,更不想c或者c++写法。上面的是c#进一步封装了的,总而言之Client流程就是那么回事 Socket参数设置,连接,读写,关闭。
@花飘水流兮: 你给的那个代码android studio它有些东西识别不了会出错
flush 一下试试
outputStream.flush(); //outputStream.write("0".getBytes());
这个方法之前试过了,不行,今天又试了还是不行
@JUATHUA: 既然服务端接收没问题,那可能就是发送的指令字符串格式有问题,百度简单了解了一下esp8266无线模块,发送字符串应该这样发送吧:
String str="abc"; send("AT+CIPSEND=3\r\n"); // 发送长度 sleep(1); // 休眠 不知道为啥 :) send("abc\r\n"); // 发送内容 flush();
总之你得按照它指定的格式进行拼接字符串,不然服务端不识别,希望对你有帮助
@wskwbog: 你好,你说的这个格式是用来设置esp8266的参数的指令,接收普通的字符串是它那边能显示,格式是+IPD,0,3:123