WINDOWS SOCKET下的网络编程
来源:互联网 发布:福利彩票双色球计算法 编辑:程序博客网 时间:2024/05/29 10:02
Windows Sockets提供了Windows环境下的、简化了的网络编程方法,应用程序将待发送的数据交给socket,再由socket交给网络驱动程序,最后由网络驱动程序把数据发送到网络中去。
我编写了一个基于TCP的、服务器端的网络通信应用程序,代码如下:
#include <Winsock2.h>
#include <stdio.h>
void main(){
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(1,1);
int err = WSAStartup(wVersionRequested,&wsaData);
if(err!=0){
return;}
SOCKET sockSrv = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len = sizeof(SOCKADDR);
while(1)
{
SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf(sendBuf,"welcome %s to http://www.sunxin.org",inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[100];
recv(sockConn,recvBuf,100,0);
printf("%s/n",recvBuf);
closesocket(sockConn);
}
}
上面的代码遵循一般的网络编程步骤:
1.加载套接字库;
2.创建套接字;
3.绑定套接字;
4.将套接字设定为监听模式;
5.利用死循环,使服务器端应用程序处于一直运转的状态,时刻监听来自客户端的连接请求,在建立连接后进行数据通信。
问题是,本程序使用了WinSock库中的函数,按照动态链接库的使用方法,需要为程序链接相应的.lib文件。在这里,需要为程序链接ws2_32.lib文件。在VS2008中链接相应库文件的方法如下:
依次点击:Project->Project Properties->Linker->Input,在Additional Dependencies中,输入ws2_32.lib。这样就把为程序链接了相应的.lib文件。
如果不链接相应的库文件,那么编译时会出现ERROR LNK2019: unresolved external symbol.
- WINDOWS SOCKET下的网络编程
- Windows网络编程:阻塞模式下的Socket编程
- Windows网络编程:阻塞模式下的Socket编程
- Windows下的Socket网络编程小实战
- Windows下的Socket网络编程小实战
- windows下socket 网络通信编程二
- windows下socket网络编程小节
- windows下,socket网络编程TCP
- Windows 下的socket编程
- Windows Socket 网络编程
- windows socket 网络编程
- windows socket网络编程
- windows socket 网络编程
- Windows socket网络编程
- windows socket 网络编程
- windows socket 网络编程
- Windows SOCKET网络编程
- windows socket 网络编程
- 二进制、八进制、十进制、十六进制之间转换
- sort函数中的第三个参数
- Ubuntu10.10下编译Android2.2内核
- StageVideo 在 Flex Applicaiton 中成瞎子了!?
- CxImage图像灰度处理简述
- WINDOWS SOCKET下的网络编程
- Where is my way ?
- pku2482 史上最浪漫的题(二叉静态检索树)
- javascript 内存管理 避免内存泄漏 [ajax in action]
- Intercepting Calls to COM Interfaces
- 用C++设计一个不能被继承的类
- 用javaScript实现两个复选框之间选项的移动和提交目标框中的选项
- Google earth 画扇形
- C# Mapxtream---创建面