文档库 最新最全的文档下载
当前位置:文档库 › TCPIP编程

TCPIP编程

TCPIP编程
TCPIP编程

套接字:“协议,地址,端口号”三元组的标识

服务器工作过程

1 定义套接字;2设置侦听端口(三元组);3把侦听端口与套接字绑定;4侦听;5接受连接,与连接套接字绑定;6发送或接收数据;7关闭套接字;

/*服务器程序*/

#pragma comment(lib,"ws2_32.lib")

#include

#include

#include

void main()

{

WSADATA wsaData;

SOCKET listens,connects; //定义两个套接字,监听和连接套接字SOCKADDR_IN saddr,caddr;//两个三元组(地址,协议,端口)结构

char recvb[100]; //接收缓冲区

int port=5150; //端口号

WSAStartup(MAKEWORD(2,2),&wsaData);/*绑定找到的Socket 库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。*/

listens=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//创建套接字

saddr.sin_family=AF_INET;//TCP/IP协议

saddr.sin_port=htons(port);//置端口

saddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//本机地址

int len1=sizeof(SOCKADDR);//地址长度

bind(listens,(SOCKADDR*)&saddr,len1);//套接字绑定三元组

listen(listens,5);//监听

connects=accept(listens,(SOCKADDR*)&caddr,&len1);//接受连接recv(connects,recvb,100,0);//接受数据

printf("\n%s\n",recvb);

closesocket(listens);closesocket(connects);//关闭套接字

WSACleanup();//释放socket库

}

客户机工作过程

1 定义套接字;

2 用套接字连接服务器;3发送或接收数据;4关闭套接字

#pragma comment(lib,"ws2_32.lib")

#include

#include

#include

void main()

{

WSADATA wsaData;

SOCKET s;

SOCKADDR_IN saddr;

int port=5150;

WSAStartup(MAKEWORD(2,2),&wsaData);

s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//创建TCP 套接字

saddr.sin_family=AF_INET;

saddr.sin_port=htons(port);

saddr.sin_addr.S_un.S_addr=inet_addr("218.76.212.10");

connect(s,(SOCKADDR*)&saddr,sizeof(SOCKADDR));//请求连接char sendbuff[100];

sprintf(sendbuff,"Hello!");

send(s,sendbuff,strlen(sendbuff),0);//传送数据

closesocket(s);

WSACleanup();

}

相关文档