Java套接字编程: How to send <STX>string-data<ETX> over TCP connection to the server?

标签 java sockets tcpclient serversocket tcplistener

我必须建立到服务器的 TCP 连接,这要求我以以下格式发送登录凭据:

< STX >用户名=fred&password=123456< ETX >

假设主机:qstage.thetcphost.com 和端口:8999

我是套接字编程新手,并使用相同的方法来实现这一点。我在客户端使用了java.net.Socket,但我不知道如何将上述字符串发送到Java中的TCP服务器。

我能够连接到服务器,但如何在之后(或期间)传递 ... 格式的凭据字符串: Socket套接字 = new Socket("mshxml.morningstar.com", 8999);

我的意思是,为了向 TCP 服务器验证自己的身份,我必须编写(在上行之后)发送此数据(封装在 STX 和 ETX 中的用户名和密码)的代码段是什么?

我已在此网站上搜索此信息,但找不到任何信息。我们将不胜感激。

代码如下:

Socket socket = new Socket("msd4xml.abcd.com", 8999, InetAddress.getLocalHost(), 8999);
    System.out.println(socket.isConnected());
    InputStream inStream = socket.getInputStream();
    OutputStream outStream = socket.getOutputStream();
    DataOutputStream dout = new DataOutputStream(outStream);
    int stx = 0x02;
    int etx = 0x03;

    dout.writeByte(stx);
    dout.writeBytes("username=fred&password=12345");   // this line gives error, infact every 2nd writeByte(s) gives error.
    dout.writeByte(etx);

它给予:

Exception in thread "main" java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.DataOutputStream.writeBytes(Unknown Source)
at com.voya.socketprog.Client.main(Client.java:44)

最佳答案

您可以使用writeByte发送STX、ETX。

static final int STX = 2;
static final int ETX = 3;

dataOutputStream.writeByte(STX);
dataOutputStream.writeBytes("username=fred&password=123456");
dataOutputStream.writeByte(ETX);

关于Java套接字编程: How to send <STX>string-data<ETX> over TCP connection to the server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36006711/

相关文章:

java - Java 中具有多个条件的三元运算符抛出错误

java - 计算2个数组之间的百分比并输出一个新数组

django - NginX权限被拒绝13

android - 将 WCF netTcpBinding 与 Android 客户端一起使用

java - 如何在 javacv 中识别和填充 I 形轮廓?

java - 用面板填充内容 Pane

scala - Akka Tcp 创建点对点架构而不是客户端服务器

posix - select()函数

python - 如果没有接收数据并且数据长度未知,如何在python中中断while循环[TCP]

delphi - TCP客户端 : Custom timeout time