The LGF 2022-04-16 00:26 采纳率: 78.6%
浏览 66
已结题

c# socket 字符串某些部分变为问号

img

客户端代码:

Socket ClientSocket;
String IP = "127.0.0.1";
int port = 19222;

IPAddress ip = IPAddress.Parse(IP);  //将IP地址字符串转换成IPAddress实例
ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//使用指定的地址簇协议、套接字类型和通信协议
IPEndPoint endPoint = new IPEndPoint(ip, port); // 用指定的ip和端口号初始化IPEndPoint实例
ClientSocket.Connect(endPoint);  //与远程主机建立连接


listadd("上报账号密码中。。。");
byte[] message = Encoding.UTF8.GetBytes("/" + username + "//" + password + "///");  //通信时实际发送的是字节数组,所以要将发送消息转换字节
ClientSocket.Send(message);
listadd("发送消息为:" + Encoding.UTF8.GetString(message));
byte[] receive = new byte[1024];
int length = ClientSocket.Receive(receive);  // length 接收字节数组长度
listadd("返回消息为:" + Encoding.UTF8.GetString(receive));
ClientSocket.Close();  //关闭连接
if (Encoding.UTF8.GetString(receive) == "0")
{
  listadd("登录成功!");
}
if (Encoding.UTF8.GetString(receive) == "1")
{
  listadd("密码错误!");
}
if (Encoding.UTF8.GetString(receive) == "2")
{
  listadd("用户未找到!");
}

服务端代码:

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
IPAddress iPAddress = IPAddress.Parse("0.0.0.0");
IPEndPoint endPoint = new IPEndPoint(iPAddress, 19222);
socket.Bind(endPoint);
socket.Listen(10);  //设定最多有10个排队连接请求
Console.WriteLine("建立连接");
Socket socket1 = socket.Accept();

byte[] receive = new byte[1024];
socket1.Receive(receive);
string recv_msg = Encoding.UTF8.GetString(receive);
Console.WriteLine("接收到消息:" + recv_msg);
string username = MidStrEx_New(recv_msg, "/", "//");
string password = MidStrEx_New(recv_msg, "//", "///");
Console.WriteLine("账户:");
Console.WriteLine(username);
Console.WriteLine("密码:");
Console.WriteLine(password);
Console.WriteLine("解密后的密码:");
Console.WriteLine(Decode(password));
byte[] send = Encoding.UTF8.GetBytes("0");
socket1.Send(send);
Console.WriteLine("发送消息为:" + Encoding.UTF8.GetString(send));

  • 写回答

1条回答 默认 最新

  • 一个武术猴子 2022-04-20 11:19
    关注

    解码的时候 试试 ascii 的美国版本解码 别用utf-8
    不然就是你本地 环境变量的问题。就这两个思路
    ps:求分

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月3日
  • 已采纳回答 11月25日
  • 创建了问题 4月16日

悬赏问题

  • ¥15 netty整合springboot之后自动重连失效
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击