Java C++ Socket 的问题

Java C++ Socket 的问题
悬赏分:25 - 提问时间2009-9-27 16:39
我想用C++作为服务器端,java作为客户端用Socket进行互联传输文件。虽然功能是实现了,但不知道为什么速度非常慢(传输一张800K的图片要2分钟O__O"…),请教大家有没有什么方法能加快一点速度的呢?
这是我的主要代码:

C++:

void Server::recvFile()
{
ofstream outs("C://tempC.bmp", ios::out | ios::binary);

while (true)
{
char buffer[50000];
char aWord;
char bWord[100];
int i;
bool eofile = false;

for (i=0; i<50000; i++)
{
recv(sockConn, &aWord, 1, 0);
if (aWord == '\n')
break;
buffer[i] = aWord;
if (aWord == 'e')
{
eofile = true;
break;
}
}

if (!eofile)
{
char aTemp[5];
for (int m=0; m<5; m++)
aTemp[m] = 0;
int count = 0;
int tempInt;
for (int j=0; j<i; j++)
{
if (buffer[j] == ' ')
{
stringstream ss(aTemp);
ss >> tempInt;
count = 0;
for (m=0; m<10; m++)
aTemp[m] = 0;

BYTE tempByte = (BYTE)tempInt;
outs.write((char*)&tempByte, sizeof(BYTE));
}
else
{
aTemp[count] = buffer[j];
count++;
}
}
}
else
break;
}
}


Java:

InputStream in = null;
OutputStream out = null;
DataOutputStream writeToSocket = null;
DataInputStream readFromSocket = null;

try {
Socket socket = new Socket("localhost", 2000);
writeToSocket = new DataOutputStream(socket.getOutputStream());
readFromSocket = new DataInputStream(socket.getInputStream());
} catch (UnknownHostException ex) {
Logger.getLogger(MyView.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(MyView.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Connection successful!\n");

try {
System.out.println("以字节为单位读取文件内容,一次读多个字节:");
byte[] tempbytes = new byte[10000];
int byteread = 0;
in = new FileInputStream("C://temp.bmp");
out = new FileOutputStream("C://temp1.bmp");

while ((byteread = in.read(tempbytes)) != -1)
{
String aString = "";
StringBuilder sb = new StringBuilder(aString);
for (byte element : tempbytes) {
sb.append(String.valueOf(element));
sb.append(" ");
}
if (byteread == -1)
sb.append("e");
else
sb.append("\n");

aString=sb.toString();

// System.out.println(aString.length());
out.write(tempbytes);
// System.out.println(aString);
writeToSocket.writeBytes(aString);

}

请大家指教!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值