Java套接字编程:如何通过TCP连接将<stx> string-data <etx>发送到服务器?

时间:2016-03-15 09:05:47

标签: java sockets tcpclient serversocket tcplistener

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

&LT; STX&gt;用户名= fred&amp;密码= 123456&lt; ETX&gt;

让我们说主持人:qstage.thetcphost.com和端口:8999

我是socket编程的新手,并使用相同的方法来实现它。我在客户端使用了java.net.Socket,但我不知道如何将上述字符串进行身份验证发送到Java中的TCP服务器。

我能够连接到服务器但是如何在&lt;中传递凭据字符串? STX&gt; ......&lt; ETX&gt;格式之后(或期间): 套接字套接字=新套接字(“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)

1 个答案:

答案 0 :(得分:1)

您可以使用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);