【发布时间】:2016-06-30 14:57:14
【问题描述】:
我必须建立到服务器的 TCP 连接,这要求我以以下格式发送登录凭据:
username=fred&password=123456
假设主机:qstage.thetcphost.com 和端口:8999
我是套接字编程的新手,并使用它来实现它。我在客户端使用了 java.net.Socket,但我不知道如何将上述字符串发送到 Java 中的 TCP 服务器进行身份验证。
我能够连接到服务器,但是如何在之后(或期间)以 ... 格式传递凭据字符串: Socket socket = new Socket("mshxml.morningstar.com", 8999);
我的意思是我必须编写什么代码(在上面的行之后)来发送这些数据(用户名和密码包含在 STX 和 ETX 中)以便向 TCP 服务器验证我自己的身份?
我已在此网站上搜索过此信息,但找不到任何信息。非常感谢您的帮助。
代码如下:
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)
【问题讨论】:
-
带有
DataOutputStream。 -
是的,我正在使用 DataOutputStream,但如何使用
和 标签发送数据。是不是这样:int stx = 2, etx = 3; String STX = new Character((char)stx).toString(); String ETX = new Character((char)etx).toString(); dataOutputStream.writeBytes(STX+"username=fred&password=123456"+ETX); -
请编辑问题以包含您的代码。
标签: java sockets tcpclient serversocket tcplistener