Java Socket编程:如何发送字符串数据通过TCP连接到服务器?

Java Socket编程:如何发送<STX>字符串数据<ETX>通过TCP连接到服务器?

问题描述:

我必须建立一个TCP连接到服务器,这就要求我送证书格式登录:Java Socket编程:如何发送<STX>字符串数据<ETX>通过TCP连接到服务器?

< STX>用户名=弗雷德&密码= 123456 < ETX>

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

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

我能够连接到服务器,但我怎么传中,< STX> ... < ETX>格式凭证字符串后(或期间): Socket套接字=新的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) 
+0

使用'DataOutputStream'。 – EJP

+0

是的,我正在使用DataOutputStream,但如何发送标签的数据。是这样的: int stx = 2,etx = 3; String STX = new Character((char)stx).toString(); 字符串ETX =新字符((char)etx).toString(); dataOutputStream.writeBytes(STX +“username = fred&password = 123456”+ ETX); – Pratap

+0

请修改问题以包含您的代码。 – weston

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

谢谢:)我会尽快更新你的验证。顺便说一句,不应该ETX = 3而不是2? – Pratap

+0

是的,我的错误 – weston

+0

那么,你试过吗? – weston