最近用vb编写了一个小的模拟客户端 用于发送图片资源,用java写了一个小程序用于接收存储,但是每次接收的时候接收到的资源都是打不开,提示的是文件已经损坏,不知道怎么回事 求大神照顾解答。
下面是代码;
vb:
Option ExplicitPrivate Sub Form_Load()
Winsock1(0).Protocol = sckTCPProtocol '使用TCP协议
Winsock1(0).LocalPort = 9999 '设置本地端口
Winsock1(0).RemotePort = 0 '设置要连接的远程端口号
Winsock1(0).Listen '设置为侦听模式
End Sub'接受连接
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim PBag As New PropertyBag '得到图片信息
Dim PictureByt() As Byte '保存图像 Load Winsock1(Winsock1.Count)
Winsock1(Winsock1.Count - 1).Accept requestID '接受新连接
'---------------------------------------------------------------
PBag.WriteProperty "Picture", Picture1.Picture
PictureByt = PBag.Contents '获取容器Byte到PictureByt()数组中 '---------------------------------------------------------------
Winsock1(Winsock1.Count - 1).SendData PictureByt '发送数据
End Sub'==========================================================窗体Client,需要控件:Command1,Command2,Picture1,Winsock1 。全部是默认属性Option ExplicitPrivate Sub Command1_Click()
Winsock1.Close '关闭连接
Winsock1.Protocol = sckTCPProtocol '使用TCP协议
Winsock1.LocalPort = 0 '动态地建立连接
Winsock1.RemotePort = 9999 '设置要连接的远程端口号
Winsock1.Connect "192.168.1.124" '设置要连接的计算机名称或IP地址
'IP改成要连接的IP Command1.Enabled = False
End SubPrivate Sub Command2_Click()
Dim bytData() As Byte '接收图片
Dim PBag As New PropertyBag '图片信息 ReDim bytData(1 To Winsock1.BytesReceived) '接收图片大小
Winsock1.GetData bytData '读取缓冲区数据
PBag.Contents = bytData Set Picture1.Picture = PBag.ReadProperty("Picture") '设置图片
Command2.Enabled = False
End SubPrivate Sub Form_Load()
Command1.Caption = "连接"
Command2.Caption = "显示图片"
End SubJAVA:package com.yang.pic_send;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class pic_sendDemo {
public static void main(String[] args) throws Exception {
Socket soc =new Socket("10.150.89.203",2000);
File f= new File("e:"+File.separator+"yang"+File.separator+"pic_get.jpg");
InputStream input = soc.getInputStream();
OutputStream out = new FileOutputStream(f);
byte get[]=new byte[4000000];
int temp=0;
int len=0;
System.out.println("正在接收....");
/*while((temp=input.read())!=-1){
System.out.print(">>>");
get[len]=(byte) temp;
len++;
}*/
len=input.read(get);
System.out.print(len);
out.write(get,0,len);
System.out.print("接收完毕");
input.close();
soc.close();
System.out.print("接收完毕");
// TODO 自动生成的方法存根 }}
不知道是协议什么错了还是怎么了 请各位帮我解答 50分送上
下面是代码;
vb:
Option ExplicitPrivate Sub Form_Load()
Winsock1(0).Protocol = sckTCPProtocol '使用TCP协议
Winsock1(0).LocalPort = 9999 '设置本地端口
Winsock1(0).RemotePort = 0 '设置要连接的远程端口号
Winsock1(0).Listen '设置为侦听模式
End Sub'接受连接
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim PBag As New PropertyBag '得到图片信息
Dim PictureByt() As Byte '保存图像 Load Winsock1(Winsock1.Count)
Winsock1(Winsock1.Count - 1).Accept requestID '接受新连接
'---------------------------------------------------------------
PBag.WriteProperty "Picture", Picture1.Picture
PictureByt = PBag.Contents '获取容器Byte到PictureByt()数组中 '---------------------------------------------------------------
Winsock1(Winsock1.Count - 1).SendData PictureByt '发送数据
End Sub'==========================================================窗体Client,需要控件:Command1,Command2,Picture1,Winsock1 。全部是默认属性Option ExplicitPrivate Sub Command1_Click()
Winsock1.Close '关闭连接
Winsock1.Protocol = sckTCPProtocol '使用TCP协议
Winsock1.LocalPort = 0 '动态地建立连接
Winsock1.RemotePort = 9999 '设置要连接的远程端口号
Winsock1.Connect "192.168.1.124" '设置要连接的计算机名称或IP地址
'IP改成要连接的IP Command1.Enabled = False
End SubPrivate Sub Command2_Click()
Dim bytData() As Byte '接收图片
Dim PBag As New PropertyBag '图片信息 ReDim bytData(1 To Winsock1.BytesReceived) '接收图片大小
Winsock1.GetData bytData '读取缓冲区数据
PBag.Contents = bytData Set Picture1.Picture = PBag.ReadProperty("Picture") '设置图片
Command2.Enabled = False
End SubPrivate Sub Form_Load()
Command1.Caption = "连接"
Command2.Caption = "显示图片"
End SubJAVA:package com.yang.pic_send;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class pic_sendDemo {
public static void main(String[] args) throws Exception {
Socket soc =new Socket("10.150.89.203",2000);
File f= new File("e:"+File.separator+"yang"+File.separator+"pic_get.jpg");
InputStream input = soc.getInputStream();
OutputStream out = new FileOutputStream(f);
byte get[]=new byte[4000000];
int temp=0;
int len=0;
System.out.println("正在接收....");
/*while((temp=input.read())!=-1){
System.out.print(">>>");
get[len]=(byte) temp;
len++;
}*/
len=input.read(get);
System.out.print(len);
out.write(get,0,len);
System.out.print("接收完毕");
input.close();
soc.close();
System.out.print("接收完毕");
// TODO 自动生成的方法存根 }}
不知道是协议什么错了还是怎么了 请各位帮我解答 50分送上
i = 0
lnx = "-->BYTE:" + Right("0000000" + Hex(i), 8) + "-"
For i = 0 To bytesTotal - 1
lnx = lnx + " " + Right("0" + Hex(iBuf(i)), 2)
If i Mod 16 = 15 Then
LogRX lnx
lnx = "-->BYTE:" + Right("0000000" + Hex(i + 1), 8) + "-"
End If
Next
i = bytesTotal - 1
If i Mod 16 <> 15 Then
LogRX lnx
End If