現在我這邊的socket作為tuxedo傳送報文的接收服務端,在返回資料給tuxedo的時候,現在遇到乙個問題,就是同乙個socket連線不能夠將訊息分批返回給tuxedo,
因為tuxedo要求第乙個報文為8位的後續報文長度,然後再傳送後續報文,必須分開發,否則不能夠正常接收。
我記得在jdk1.4的時候,我們做通訊測試的時候,可以將報文分兩次傳送,後面因為要使用到執行緒池,就換成了jdk1.5,結果現在不能夠分兩個次傳送,我嘗試了jdk1.6_u18也不行,我的程式如下:
...
dos=new dataoutputstream(socket.getoutputstream());
dos.writebytes(returnlen);//先傳送報文長度
dos.flush();
dos.writebytes(message);//先傳送報文長度
dos.flush();
...
採用jdk5以上的版本按這樣的程式傳送的時候,他會報兩個一起傳送,我的socket測試客戶就可以檢測,因為我的socket客戶端在收到訊息後就會立刻退出,不會等後面的報文,結果列印出來的就是長度加後續報文。
我曾嘗試(1):
...
dos=new dataoutputstream(socket.getoutputstream());
dos.writebytes(returnlen);//先傳送報文長度
dos.flush();
dos=new dataoutputstream(socket.getoutputstream());
dos.writebytes(message);//先傳送報文長度
dos.flush();
...
(2):
...
dos=new dataoutputstream(socket.getoutputstream());
dos.writebytes(returnlen);//先傳送報文長度
dos.flush();
dos.close();這裡會把socket也關掉,後面的就發不出去了,報異常
dos=new dataoutputstream(socket.getoutputstream());
dos.writebytes(message);//先傳送報文長度
dos.flush();
...
現在想換到jdk1.4測試也不能夠了,因為其它的關鍵地方也使用jdk5的特性。不知道各位有沒有遇到這樣的問題,有請分享一下。
犯了乙個低階錯誤,對方原來不是用tuxedo傳送的報文,我一直以為對方使用的是tuxedo傳送的報文,就是用的tcp/ip協議與我進行的通訊。
我的報文也是發過去了的,只是那邊解析沒有正確,一直顯示收到的為空,後面由對方修改程式,問題搞定。
我咋就這麼背了,給自己找不快,不過這個分次給對方發報文還是沒有解決,暫時先放下了。
乙個Tuxe指令碼
lrt tuxputenv wsnaddr data 0 lrt tpalloc carray 10240 lrt strcpy data 0,sbuf 1 lr log message we can see the data s.lr eval string data 0 lrt display ...
Java Socket程式設計
一般,就這麼的形式,熟悉後就這麼用了。客戶端 首先,建立客戶端套接字 socket s new socket ip,port 通過套接字,可以獲得輸入流和輸出流 inputstream is s.getinputstream outputstream os s.getoutstream 接下來就是對...
java socket程式設計
1.什麼是socket 所謂socket通常也稱作 套接字 用於描述ip位址和埠,是乙個通訊鏈的控制代碼。應用程式通常通過 套接字 向網路發出請求或者應答網路請求。2.客戶端和伺服器端通過socket傳送訊息和接收訊息的過程 接收訊息的過程 傳送訊息的過程 server端listen 監聽 某個埠是...