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

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 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥15 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 stm32标准库的PID角度环