Socket网络编程复习与总结
来源:互联网 发布:少年西游记网络破解版 编辑:程序博客网 时间:2024/06/15 06:07
TCP部分
头文件Winsock32.h
库文件ws2_32.lib
(注:以下在服务器和客户端都能发送和接收)
服务器:
WSAData wsaData;
int error;
error = WSAStartup( MAKEWORD( 2, 2 ), &wsaData );
然后判断error值!=,返回;
然后判断是否被DLL支持
socket(,,)
第一个参数必须:AF_INET,表示地址协议族
第二个参数:a.SOCK_DGRAM,b.SOCK_STREAM. a是UDP类型,b是TCP类型
第三个参数:最好为0,他会根据地址类型和套接字类别,自动为你选择一个合适的协议
调用成功则返回一个SOCK类型的数据类型描述符,如果失败,这个就会返回一个INVALID_SOCKET,错误信息可以通过WSAGetLastError函数返回。
bind(,,)
第一个参数为要绑定的socket.
第二个参数指定该套接字的本地地址信息,是指向sockaddr结构的指针变量,对于不同协议不同(所以我们要用到第三个参数sizeof(sockddr)),在TCP/IP协议中,我们可以用socketaddr_in结构代替sockaddr。
struct socketaddr_in
{
short sin_family;//这个固定为AF_INET,
unsigned short sin_port;//端口号,注意,这里必须用网络字节序,调用函数htons函数
struct in_addr sin_addr;//IP地址,如果指定为INADDR_ANY,则允许套接字向任何分配给本机的IP地址发送或者接收数据,这对于有多个网卡的机器来说,就简化了程序的编写,如果只想让一个IP地址接收数据,则必须指定具体某个IP,这可以用inet_addr()函数,注意,这里也必须用网络字节序,调用函数htonl函数
char sin_zero[8];//只是个填充,以保证socketaddr_in与sockaddr长度一样
}
bind()函数调用成功返回0,失败就会返回一个SOCKET_ERROR,同样的错误信息可以通过WSAGetLastError函数返回。
listen(,)
第一个参数为套接字
第二个参数:等待连接最长请求队列
在死循环里调用accept(,,) //等待客户端连接
第一个参数为套接字
第二个参数为客户端的IP
第三个参数地址结构的长度,必须有一个初始值,可以用sizeof(SOCKADDR)
返回一个SOCKET
send(,,,)
第一个参数为套接字(accept返回值)
第二个参数包含被传送的数据的buffer
第三个参数buffer数据的长度
第四个参数flag,影响send的行为,设为0
recv(,,,)
第一个参数为套接字(accept返回值)
第二个参数包含被接收的数据的buffer
第三个参数buffer数据的长度
第四个参数flag,影响recv的行为,设为0
最后closesocket().
客户端:
WSAStartup方法调用,建立一个socket,这与服务器一样
connect(,,)
第一个参数为套接字
第二个参数地址结构体信息,与服务器端bind函数类似
第三个参数地址结构长度
recv(,,,)
与服务器端recv函数类似
send()
与服务器端send函数类似
closesocket
UDP部分
头文件Winsock32.h
库文件ws2_32.lib
服务器:
WSAStartup方法调用,建立一个socket,这与TCP服务器类似(第二个参数改为SOCK_DGRAM)
bind()一样
recvfrom(,,,,,)
第一个参数为socket
第二个参数buf数组
第三个参数buf的长度
第四个参数flag,设为0,
第五个参数目的地址结构的指针(out)
第六个参数整形的指针,返回地址结构的大小,(in,out)
closesocket()
WSACleanup()
客户端:
WSAStartup方法调用,建立一个socket
sendto(,,,,)
第一个参数为socket
第二个参数buf数组
第三个参数buf的长度
第四个参数flag,设为0,
第五个参数目的地址结构的指针(out)
第六个参数地址结构体的长度,(in,out)
closesocket()
WSACleanup()
- Socket网络编程复习与总结
- socket编程复习(6)-网络通信
- socket网络编程学习总结
- 网络编程--之socket编程知识点总结
- java中socket网络编程总结
- Linux socket 网络编程常用函数总结
- 安卓Socket网络编程技巧总结
- Linux socket 网络编程常见问题总结
- Android网络编程的Socket通信总结
- Socket网络编程的大致总结
- 网络编程:Socket与JavaSE线程高级
- Java网络编程之Socket与SocketServer
- 网络编程复习
- C++网络编程复习
- linux网络编程复习
- 网络编程复习_Exp1
- 【javase复习】## 网络编程 ##
- linux 网络编程复习
- Query String Inspector for Flex
- 正宗西安人
- 关于东芝笔记本电脑无法用GHOST的解决办法
- tomcat5中文问题解决之道
- JSP+MySQL+Tomcat+Apache乱码解决一例
- Socket网络编程复习与总结
- ADO.NET 数据库实例教程
- 怎样在hibernate中使用weblogic的JNDI?
- GridView 排序及分页
- Ubuntu中的打印机
- 局域网维护
- AWT与Swing的学习笔记
- JAVA 面试问题1
- [转] ERP的下一个浪潮BI,当SAP遇到SAS