学习socket编程,遇到乱码问题。。倒腾半天,至少有个解决方案。
服务端:
package mmo.net.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.charset.Charset;
public class SServer
{
public static void main(String[] args)
{
try
{
ServerSocket httpd = new ServerSocket(8000, 10,
InetAddress.getByName("172.16.8.33"));
Socket socket = httpd.accept();
BufferedReader read = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
while (true)
{
String data = read.readLine();
String data2 = new String(data.getBytes(Charset.forName("GBK")));
System.out.println("data == > " + data2.toString());
out.println(data2);
out.flush();
if(data.equals("end"))
break;
}
socket.close();
}
catch (UnknownHostException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端:
package mmo.net.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class SClient
{
public static void main(String[] args) throws IOException
{
try
{
InetAddress inet = InetAddress.getByName("172.16.8.33");
Socket client = new Socket(inet, 8000);
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream());
BufferedReader wt = new BufferedReader(new InputStreamReader(System.in,"gbk"));
while(true)
{
String data = wt.readLine();
out.println(data);
out.flush();
if(data.equals("end"))
{
break;
}
String data1 = in.readLine();
System.err.println("data1 == > " + data1);
}
client.close();
}
catch (UnknownHostException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果:
客户端// Sclient
有木有乱码!!!
data1 == > 有木有乱码!!!
//服务端
data == > 有木有乱码!!!
心得:
1.读写器默认是utf8格式
2.String data2 = new String(data.getBytes(Charset.forName("GBK"))); 其他编码无效
3.在读写器上设置gbk,也会出现乱码情况。
分享到:
相关推荐
在Java和C#之间进行Socket通信时,遇到中文乱码问题主要是由于编码格式不一致导致的。Java默认使用UTF-8编码,而C#在处理字符串时可能使用其他编码,如GBK或ASCII。为了解决这个问题,我们需要确保两端在发送和接收...
通过以上策略,我们可以有效避免Java Socket在传输汉字时出现的乱码问题,保证网络数据交换的准确性和完整性。在实际开发中,要养成良好的编码习惯,始终关注字符编码的选择,确保程序的跨平台性和兼容性。
- 数据传输时要考虑编码和解码问题,避免乱码。 - 注意网络延迟和带宽限制,优化数据传输效率。 总结起来,实现Java Socket收发数据及断网自动连接涉及了Socket的基本使用、异常处理、重连策略、心跳机制和线程...
Java和C++之间进行Socket通信时,可能会遇到乱码问题,主要是由于编码格式不一致导致的。Java默认使用UTF-8编码,而C++在Windows XP环境下可能使用GBK编码。解决这个问题的关键在于确保数据在传输过程中保持正确的...
Java提供了多种字符编码方式,如UTF-8、GBK等,需要根据实际需求选择合适的编码格式,并确保两端保持一致,以避免乱码问题。 9. **实例分析**:FMNotifServer这个文件可能是一个服务器端的示例代码,可能包含了上述...
7. **编码与解码**:在传输字符串数据时,需要考虑字符编码,比如使用`Charset`类进行编码转换,避免乱码问题。 8. **关闭资源**:在完成通信后,记得关闭`Socket`、`InputStream`和`OutputStream`,以释放系统资源...
本文将深入探讨如何使用XMLSocket在Flash与Java之间进行高效、稳定的数据交换,并且特别关注如何解决在通信过程中可能出现的中文乱码问题。 首先,XMLSocket是Flash中的一个类,它提供了基于TCP/IP的双向通信功能,...
在Socket通信中,处理中文字符时可能会遇到乱码问题。这是因为Java中的字符串(String)是以Unicode编码存储的,而网络传输通常是基于字节流的,如ASCII或GBK等编码。当从字节数组构建字符串时,如果没有正确指定字符...
Java Socket是Java编程语言中用于实现网络通信的一种基础工具,它允许两个应用程序通过TCP/IP协议进行数据交换。在这个"java socket 客户端和服务端例子"中,我们有两个主要组件:服务端(server)和客户端(client...
本文将详细探讨如何使用Java开发这样的客户端,并解决在处理中文字符时可能出现的乱码问题。 首先,让我们了解Java中的Socket编程。在Java中,`java.net.Socket`类提供了TCP/IP套接字功能,可以用于建立客户端到...
需要注意的是,确保在发送和接收端保持一致的字符编码,以避免乱码问题。 5. **实现细节**: - **服务器端**:创建ServerSocket监听特定端口,等待客户端连接。接收到连接后,通过Socket的输入流接收文件数据,并...
java socket发送SMTP邮件,支持SSL,支持发附件,抄送且发送的邮件标题内容都无乱码!
1、新建java项目; 2、把解压后的5个java类复制进去,修改包路径 3、先运行服务器类MJServer.java,再运行客户端类MyClient.java ...ps:因为本人系统用的是繁体字,可能会导致有乱码出现,修改一下编码格式即可
发送和接收字符串时,需确保两端采用相同的编码方式,否则可能会出现乱码问题。 9. **安全性**: 对于涉及敏感信息的通信,可能需要使用SSL/TLS来加密数据,以保护数据的隐私。Java提供了`javax.net.ssl`包来支持...
Java中的`Charset`类提供了对不同字符集的支持,例如UTF-8,确保信息在网络传输过程中不会出现乱码。 6. **多用户管理**: 实现多人聊天功能,需要一个用户管理机制,可能涉及到用户认证、聊天室创建和管理等。这...
例如,都使用UTF-8编码,否则可能会遇到字符乱码问题。同时,数据格式也需要统一,比如JSON或自定义的二进制格式。 在实际应用中,Java和C++的Socket通信常用于分布式系统、微服务架构中,其中Java负责提供API或Web...
4. **数据编码**:确保客户端和服务器之间正确处理字符编码,防止乱码问题。 六、示例代码片段 ```java // 服务器端 ServerSocket server = new ServerSocket(8080); while (true) { Socket client = server....
在使用Netty进行TCP/IP通信时,我们可能会遇到数据进制转换导致的乱码问题。这个问题通常是由于数据编码不一致或者处理方式不当所引起的。在本文中,我们将深入探讨Netty中的进制转换和字符编码,并提供解决方案。 ...
为了确保消息的正确传递,开发者可能会使用编码和解码策略,例如UTF-8编码,来处理非ASCII字符集,以避免乱码问题。此外,还可能引入心跳机制,即客户端和服务器定期发送保持连接的信号,防止因网络延迟或断开而导致...
在Java中,我们需要确保客户端和服务器端对数据的编码方式一致,否则可能会出现乱码问题。 6. 异常处理:在网络通信中,网络中断、连接失败等问题是常态,因此良好的异常处理机制是必不可少的。我们需要捕获并适当...