`
dyllove98
  • 浏览: 1424546 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:39495
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:80828
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:134088
社区版块
存档分类
最新评论

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);
               
            }

请大家指教!!
分享到:
评论

相关推荐

    Java c++ socket通信

    Java和C++之间的Socket通信是跨语言网络编程的一个常见应用场景。Socket是计算机网络中的一个通信协议,它允许不同操作系统上的应用程序之间建立连接并交换数据。在这个场景中,Java作为客户端,C++作为服务端,两者...

    java与c++通过socket通信

    Java和C++之间的Socket通信是跨语言网络编程的一个常见应用场景,尤其在系统集成、设备通讯或者混合编程中。Socket提供了一种基于TCP/IP协议的进程间通信(IPC)方式,可以实现在不同操作系统上的进程之间的数据传输...

    java c++ 通信之间的乱码解决方法

    Java和C++之间进行Socket通信时,可能会遇到乱码问题,主要是由于编码格式不一致导致的。Java默认使用UTF-8编码,而C++在Windows XP环境下可能使用GBK编码。解决这个问题的关键在于确保数据在传输过程中保持正确的...

    Java和c++的Socket通信如何发送结构体

    标题中的"Java和C++的Socket通信如何发送结构体"主要涉及到两个关键问题:字节序和数据序列化。字节序是指在内存中存储多字节数据的顺序,分为大端字节序(Big-Endian)和小端字节序(Little-Endian)。大多数网络...

    java使用socket和c++通信

    本话题聚焦于"java使用socket和c++通信",这是一个典型的跨语言、跨平台的网络编程场景。Java和C++都是广泛应用的编程语言,它们之间的通信能够实现多种系统的交互和集成。以下是关于这一主题的详细知识讲解。 首先...

    java-socketcan

    同时,`libjni_socketcan.so`是一个动态链接库文件,它是Java Native Interface(JNI)的一部分,用于在Java代码和C/C++代码之间建立桥梁。JNI库在这里的作用是将Java层的调用转换为对底层SocketCAN C库的操作。 ...

    C++与java的socket

    C++与java的socket通信实例代码,cocos2dx socket通信与java服务器

    C/C++服务器与Java客户端进行socket通信

    本教程将深入探讨如何在C/C++服务器环境下利用Visual Studio 2010与Java客户端环境下的Eclipse进行Socket通信。 一、C/C++服务器端(VS2010) 在Visual Studio 2010中,我们可以使用Winsock库来实现Socket编程。...

    C++ socket绝密编程资料.rar

    它提供了语言无关的API,支持C++、Java、Python等多种语言。 2. Ice组件:主要包括冰刀(Ice割刀)、冰立方(Ice Cube)和冰刀片(Ice刀片)。冰刀是编译器,负责生成客户端和服务器代码;冰立方是运行时库,提供...

    C++写的服务器与Java写的客户端通过Socket通信C++代码

    本示例探讨了如何使用C++实现服务器端,并用Java编写客户端,通过Socket进行通信。Socket编程是网络编程的基础,它允许两个不同的进程在同一个网络上进行通信。下面将详细介绍这个主题及其相关知识点。 1. **Socket...

    C++服务器与java进行socket通信案例

    本案例探讨了如何使用C++构建服务器端,并使用Java编写客户端,通过Socket进行通信。Socket编程是实现网络通信的一种基础方式,它允许不同计算机上的应用程序之间建立连接并交换数据。 首先,我们关注C++服务器端。...

    c++--java,socket.zip

    本资源"**c++--java,socket.zip**"提供了一种实现C++与Java之间通过Socket进行通信的方法。Socket编程是一种标准的网络通信协议,允许不同计算机上的应用程序之间建立连接并交换数据。 首先,我们要理解Socket的...

    c++客户端和java(Netty)服务器端tcp通讯

    当C++客户端需要向Java服务器发送数据时,先序列化protobuf消息,然后通过socket发送。服务器端接收到数据后,使用ProtobufDecoder进行解码,恢复成protobuf消息对象,再进行业务逻辑处理。同样,服务器如果需要向...

    java与c++传文件程序

    本项目实现了一个基于Socket的文件传输方案,其中Java作为服务端,C++作为客户端,使得Windows环境下的文件能够在两个程序之间安全、高效地传递。以下是对这个程序设计和实现的关键知识点的详细说明: 1. **Java ...

    android中java和C的socket通信demo

    在Android开发中,有时我们需要进行Java层与C/C++(JNI)层的通信,以便利用C/C++的高性能优势处理一些底层任务。本教程将详细解释如何在Android中实现Java和C的Socket通信,特别是在涉及文件描述符传递的场景下。 ...

    java和C++通信结构体发送

    标题中的“Java和C++通信结构体发送”指的是在Java和C++这两种不同的编程语言之间,通过网络进行通信时如何有效地传递结构体数据的问题。在跨语言通信中,由于二进制序列化和内存布局的差异,直接传输结构体会面临...

    javaCV将socket获取的视频流推到流媒体(RTMP)服务器jar

    7. **javacpp-1.3.3.jar**: JavaCPP是JavaCV的一个依赖,它提供了Java与C++之间的桥接,使得Java可以直接调用C++的库,如OpenCV和FFmpeg,提高了性能。 8. **使用流程**: 在实际应用中,开发者首先需要通过Socket...

    C++写的服务器与Java写的客户端通过Socket通信java代码

    在这个场景中,我们关注的是C++编写的服务器和Java编写的客户端如何利用Socket进行通信。下面将详细介绍这个过程。 首先,让我们了解Socket的基本概念。Socket可以被看作是两台计算机之间的通信端点,它提供了低...

    利用socket连续发送与连续接收数据

    在Java中,我们可以使用`java.net.Socket`和`java.net.ServerSocket`类来创建和管理Socket。客户端使用`Socket`类创建连接到服务器的实例,而服务器端则使用`ServerSocket`类监听传入的连接请求。 1. **服务器端...

    视频推流调试.rar java PHP c++ 推流调试工具,socket开发

    这个“视频推流调试.rar”压缩包包含针对Java、PHP和C++三种不同编程语言的推流调试工具,适用于开发者进行实时视频流的传输测试和优化。以下是关于这些技术的详细解释: 1. **视频推流**: 视频推流是一种将视频...

Global site tag (gtag.js) - Google Analytics