前段时间做过java、c/c++、delphi用socket通讯的产品,代码不能提供,思想要不要?

解决方案 »

  1.   

    有VC的拉,要不要? // TODO: Add your control notification handler code here
    AfxSocketInit(NULL);
    CSocket sockClient;
    sockClient.Create(); CString szIP;
    GetDlgItemText(IDC_EDIT_IPADDRESS,szIP);

    if(!sockClient.Connect((LPCTSTR)szIP, 800))
    {
    AfxMessageBox("连接到对方机器失败!");
    return;
    }
    SOCKET_STREAM_FILE_INFO StreamFileInfo;
    sockClient.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO)); CFile destFile(StreamFileInfo.szFileTitle, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary); UINT dwRead = 0;
    while(dwRead<StreamFileInfo.nFileSizeLow)
    {
    byte* data = new byte[1024];
    memset(data,0,1024); UINT dw=sockClient.Receive(data, 1024);
    destFile.Write(data, dw); dwRead+=dw;
    } SetFileTime((HANDLE)destFile.m_hFile,&StreamFileInfo.ftCreationTime,
                    &StreamFileInfo.ftLastAccessTime,&StreamFileInfo.ftLastWriteTime);
    destFile.Close();
    SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);
    sockClient.Close();
    AfxMessageBox("接收完毕!");
    、、、、、、、、、、、、、、、、、、、、、、、、、
    void CServerDlg::OnButtonLicsen() 
    {
    // TODO: Add your control notification handler code here
    CFileDialog Dlg(TRUE);
    if(Dlg.DoModal()!=IDOK)
    return;

    CFile myFile;
    if(!myFile.Open(Dlg.GetPathName(), CFile::modeRead | CFile::typeBinary))
    {
    AfxMessageBox("文件不存在!",MB_OK|MB_ICONERROR);
    return;
    }

    CSocket sockSrvr;
    sockSrvr.Create(800); sockSrvr.Listen();
    CSocket sockRecv;
    sockSrvr.Accept(sockRecv); SOCKET_STREAM_FILE_INFO StreamFileInfo;
    WIN32_FIND_DATA             FindFileData; FindClose(FindFirstFile(Dlg.GetPathName(),&FindFileData));
        memset(&StreamFileInfo,0,sizeof(SOCKET_STREAM_FILE_INFO));
        strcpy(StreamFileInfo.szFileTitle,myFile.GetFileTitle());    StreamFileInfo.dwFileAttributes     =       FindFileData.dwFileAttributes;
        StreamFileInfo.ftCreationTime       =       FindFileData.ftCreationTime;
        StreamFileInfo.ftLastAccessTime     =       FindFileData.ftLastAccessTime;
        StreamFileInfo.ftLastWriteTime      =       FindFileData.ftLastWriteTime;
        StreamFileInfo.nFileSizeHigh        =       FindFileData.nFileSizeHigh;
        StreamFileInfo.nFileSizeLow         =       FindFileData.nFileSizeLow; sockRecv.Send(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO)); UINT dwRead=0;
    while(dwRead<StreamFileInfo.nFileSizeLow)
    {
    byte* data = new byte[1024];
    UINT dw=myFile.Read(data, 1024);
    sockRecv.Send(data, dw);
    dwRead+=dw;
    }
    myFile.Close(); sockRecv.Close();
    AfxMessageBox("发送完毕!");
    }
      

  2.   

    讲讲也好,另外问一下,unix和windows下的c程序主要有哪些不同?
      

  3.   

    有做JAVA程序和C程序通过SOKET通信的吗?
    请高手讲解,谢谢
      

  4.   

    其实用什么语言编写并没有什么重要的,主要是这个套接字提供的服务(属于应用层协议)协议要明确定义。这就象你并不关心你的浏览器的开发语言是不是同你要连接的WEB服务器的开发语言一致一样
      

  5.   

    都是Socket拉。我在UNIX下写程序一样查的是MSDN的帮助。
      

  6.   

    补充一下,由于语言的差异,传递的socket数据最好是字符串型的。不要传递复杂数据类型或者类的实例。socket报文的定义,可以考虑定义成xml文档。
      

  7.   

    to bhr(追风):在unix下开发多进程程序很容易,代码量少。开发多线程程序也不错。另外,windows下主要用winsock2开发socket程序,它的异步机制不错。
      

  8.   

    最近一段时间一直都在做这个,呵呵,没有觉得有什么不同。还是一样的,只是我对java的不太熟悉,所以写起来比较麻烦,用c写的程序还是一样,没有觉得什么不同的。
      

  9.   

    各位老大,我在做程序时遇到这样一个问题:
    java写的代码做为client,vc或delphi写的代码作为server,
    client发到server的消息,对方能收到
    但是server发回来的消息怎么收不到呢?
      

  10.   

    人很多嘛,肯定有很多高手,我再把问题说的细一点:
    我用InputStreamReader,in = new BufferedReader(new in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    有人告诉我应该用OjbectInputStream,但是我用
    in = new ObjectInputStream(socket.getInputStream());
    这个干脆就退出了。备注:我的第1句和java写的程序通讯是没有问题的。
      

  11.   

    private void initSocket() {
            try {
                socket =new Socket(host,port);
                System.out.println("Socket:"+socket);
            } catch (Exception e) {
                e.printStackTrace();
                try {
                    conn.close();
                } catch (Exception ee) {
                    e.printStackTrace();
                    System.exit(1);
                }
                System.exit(1);
            }        try {
                in=new BufferedReader(
                        new InputStreamReader(
                        socket.getInputStream()));
                out=new PrintWriter(
                        new BufferedWriter(
                        new OutputStreamWriter(
                        socket.getOutputStream())),true);
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
    发送命令
    out.println("aaaaa");接受
    str=in.readLine();
      

  12.   

    private static Socket socket;
        public static BufferedReader in;
        public static PrintWriter out;
      

  13.   

    to minotaurus(弥诺陶络斯):你开发的socket系统中,server和client间传递的是什么类型的报文数据?字符串还是对象?