请问如何在纯C++中实现多线程socket编程,而不使用Vc来实现
我的意思是不使用vc中的线程类派生
因为我想尽量的编写一个程序和操作系统关系不大的socket程序。
C++程序可以在window和unix下运行。
要是派生于mfc类的话,我想可能就无法在unix下运行。
我想做个可以在window 和unix下运行的socket程序。
在这里先谢过了。

解决方案 »

  1.   

    windows 下创建线程, 不管是 vc++/MFC, delphi/VCL, java, c#, 它们最终都会调用 CreateThread 这个操作系统提供的函数. 你可以看看 MSDN.如有不明, 可再叙.
      

  2.   

    没戏,据我所知,凡涉及到多线程序问题,没办法实现WINDOWS 和UNIX 跨平台!
      

  3.   

    see
    http://www.lowtek.com/sockets/
      

  4.   

    对我们应用层来说你只要调用的是标准系统API,Unix,Linux,Windows下的函数调用是基本差不多的,当然还是有一些区别的.至于具体实现是完全封装在系统内部的我常写那些跨平台编译的软件,好象没有问题嘛
      

  5.   

    即使你完全采用WINSOCK API,暂时不考虑WINDOWS下面多线程和UNIX下线程(其实UNIX下没有线程这一概念)的区别,也无法跨平台,虽然WINSOCKET是从BERKELEY的套接字移植过来的,但是现在已经完全成为了一种新的接口,所以只要用到WINSOCK,是无法实现跨平台的
      

  6.   

    代码一个字不改就跨平台是不可能的!
    但如果你使用的是BSD Socket 比如说socket,recv之类的函数,在程序中加一些宏能够解决。
    线程上有点麻烦,最好自己封装一个线程类,不用很复杂,只要线程创建成功了,后面做的事都是相同的,关键是把Win Thread和pthread的不同之处掩盖住就行。线程同步用Semaphore和Critical。可用于Windows,linux, Unix
      

  7.   

    不是c++就可以跨平台
    首先头文件句不一样
    定义的socket类型也不一样,一个是socket,一个是int
    另外还有一些差异,比如WSAGETLASTERROR,unxi下是errorno
    另外启线程序和unxi下启进程的函数也不一样
    但还是可以实现跨平台的,不过还是比较麻烦
      

  8.   

    有一个叫做common C++的类库可以实现windows下和unix下代码移植.我用过,多线程也没问题,所有操作系统相关的细节都被封装.
      

  9.   

    unix 下的 socket编程,用纯c写,你可以在unix下编写,可移植性很好
      

  10.   

    pittswei()  common C++ ?? 是GNU的Common C++吗?
    我推荐用C++,因为现在大部分编译器都支持C++了,这样可以充分利用类的封装特性,能大大简化window和unix/linux之间的移植
      

  11.   

    对啊。vc的多线程是借助操作系统实现的。
    java批评c++的一个方面就是:没有多线程。
    java有。std c++没有。