Chinaunix首页 | 论坛 | 博客
  • 博客访问: 654408
  • 博文数量: 111
  • 博客积分: 5010
  • 博客等级: 大校
  • 技术积分: 1461
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-08 14:40
文章分类

全部博文(111)

文章存档

2010年(10)

2009年(70)

2008年(31)

我的朋友

分类: C/C++

2009-11-17 20:48:41

我有几个问题想问问  
   
  1.   在windows和Unix下的socket编程有何不同?  
        比如:头文件名的区别?IP4的具体struct里的变量名是否一样  
  2     在windows下不同的编译器devc++   与vc6.0下的socke编程又有何不同?  
  3.   用devc++写简单socket程序时   要用到那些基本的头文件名   我只知道winsock  
        与winsock2,不知道别的还需要什么?    
  4.   能否给个在devc++或vc6.0下可直接就能编译通过的简单的socket代码  
   
  小弟谢了

有一段代码,关于VC6中SOCKET编程,实现了一个多线程、多用户的服务端  
  服务端功能:接收10个字符,并将其逆转后返回客户端(基于对话框)  
  代码如下:  
  //服务端代码  
  //注意:编译采用Release模式  
  VOID   ConnThread(LPVOID   lParam)  
  {  
  CSocket   *   conn=(CSocket*)lParam;  
  char   buf[20];  
  for(;;)  
  {  
  conn->Receive(buf,10);  
  buf[10]='\0';  
  CString   text;  
  text=buf;text.MakeReverse();  
  strcpy(buf,text);  
  conn->Send(buf,10);  
  }  
  }  
  VOID   SockThread(LPVOID   lParam)  
  {  
  CSocket   sock,*conn;  
  if(   sock.Create(5555)   )  
  {  
  for(;;)  
  {  
  conn=new   CSocket;  
  sock.Listen();  
  if(   sock.Accept(*conn)   )  
  {  
  AfxBeginThread((AFX_THREADPROC)ConnThread,(LPVOID)conn,THREAD_PRIORITY_NORMAL,0,0,0);  
  }  
  }  
  sock.Close();  
  }  
  }  
  void   CSerDlg::OnButtonStart()    
  {  
  AfxBeginThread((AFX_THREADPROC)SockThread,(LPVOID)0,THREAD_PRIORITY_NORMAL,0,0,0);  
  }  
  //客户端代码  
  //记住改变IP和PORT  
  void   CCliDlg::OnButtonConnect()    
  {  
  CSocket   sock;  
  if(   sock.Create()   )  
  {  
  if(   sock.Connect("192.168.1.1",8888)   )  
  {  
  sock.Send("0123456789",10);  
  char   buf[20];  
  sock.Receive(buf,10);  
  buf[10]='\0';  
  AfxMessageBox(buf);  
  }  
  sock.Close();  
  }  
  }  
 
阅读(3387) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~