套接字编程在发送数据时删除(;)字符 我在java中通过socket发送一些字符,并用C++代码接收。它适用于每个字符,但当我发送分号(;)时,它不会在另一端收到。只删除分号。我不明白,这很奇怪。有人能帮忙吗
Java代码(客户端) 我调用此函数并将字符串作为参数传递,该参数包含我要随(;)一起发送的所有字符 C++代码(服务器)套接字编程在发送数据时删除(;)字符 我在java中通过socket发送一些字符,并用C++代码接收。它适用于每个字符,但当我发送分号(;)时,它不会在另一端收到。只删除分号。我不明白,这很奇怪。有人能帮忙吗,java,c++,sockets,tcp-ip,Java,C++,Sockets,Tcp Ip,Java代码(客户端) 我调用此函数并将字符串作为参数传递,该参数包含我要随(;)一起发送的所有字符 C++代码(服务器) intmain() { std::string recvData=“”; 尝试 { 服务器套接字服务器(30000); while(true) { 新的服务器插座; server.accept(新的_sock); 尝试 { while(true) { 新的_sock>>recvData; //对接收到的数据进行处理,在这里我看不到发送的(;) } } 捕获(SocketEx
intmain()
{
std::string recvData=“”;
尝试
{
服务器套接字服务器(30000);
while(true)
{
新的服务器插座;
server.accept(新的_sock);
尝试
{
while(true)
{
新的_sock>>recvData;
//对接收到的数据进行处理,在这里我看不到发送的(;)
}
}
捕获(SocketException&e)
{
coutHard告诉我。可能是字符编码问题。你可以用来查看实际发送的内容。这样你就可以确定这是客户端问题还是服务器端问题。DataOutputStream
应该与套接字一起构造一次,而不是每个消息构造一次,并且不需要刷新。当然new_sock
是套接字,<代码> >不是代码> Servocket。< /Cord>我对socket编程非常陌生,不知道Socket和Servocket之间的区别。java字符串是UTF 16编码的,C++ STD:字符串不是。你将有编码发行。好,我怎么解决它?
public void send_string(Socket socket, String str) throws IOException
{
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeBytes(str);
out.flush();
}
int main()
{
std::string recvData = "";
try
{
ServerSocket server ( 30000 );
while ( true )
{
ServerSocket new_sock;
server.accept ( new_sock );
try
{
while ( true )
{
new_sock >> recvData;
// processing of received data, here i don't see (;) which was sent
}
}
catch(SocketException &e)
{
cout<<e.description().c_str();
}
}
catch(SocketException &e)
{
cout<<e.description().c_str();
}