我有几个问题想问问
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();
}
}
阅读(3424) | 评论(0) | 转发(0) |