TCP/IP协议TransmissionControlProtocol/InternetProtocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。
TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。
我选的第一题,TCP通信
服务器代码:
#include "stdafx.h"
#include<Winsock2.h>
#pragma comment(lib,"WS2_32.lib")
int main(int argc, char* argv[])
{
WORD wVersionRequested
WSADATA wsaData
int err
wVersionRequested = MAKEWORD( 2, 2 )
err = WSAStartup( wVersionRequested, &wsaData )
if ( err != 0 )
{
return -1
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( )
return -1
}
//这之上的是必须的
SOCKET sockSer = socket(AF_INET,SOCK_STREAM,0) //TCP套接字
SOCKADDR_IN AddrSer
AddrSer.sin_family=AF_INET
AddrSer.sin_port=htons(6666)
AddrSer.sin_addr.S_un.S_addr= inet_addr("127.0.0.1")//本机地址
int ret = bind(sockSer,(SOCKADDR *)&AddrSer,sizeof(SOCKADDR_IN))
if(ret!=0)
return -1
listen(sockSer,5)
SOCKADDR_IN AddrClient
int len=sizeof(SOCKADDR_IN)
SOCKET sockLink=accept(sockSer,(SOCKADDR *)&AddrClient,&len)
int i=0 char buf[50]
while(1)
{
memset(buf,0,50)
recv(sockLink,buf,50,0)
printf("%s\n",buf) //将得到的字符串输出(可不要)
i=strlen(buf) //得到字符串长度
memset(buf,0,50)
sprintf(buf,"%d",i) //将int类型i写入char类型buf中
send(sockLink,buf,strlen(buf)+1,0) //发送长度buf
}
closesocket(sockLink) closesocket(sockSer)
return 0
}
客户端代码:
#include "stdafx.h"
#include<Winsock2.h>
#pragma comment(lib,"ws2_32.lib")
int main(int argc, char* argv[])
{
WORD wVersionRequested
WSADATA wsaData
int err
wVersionRequested = MAKEWORD( 2, 2 )
err = WSAStartup( wVersionRequested, &wsaData )
if ( err != 0 )
{
return -1
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( )
return -1
}
SOCKET sockClient= socket(AF_INET,SOCK_STREAM,0)
SOCKADDR_IN addr_ser
addr_ser.sin_family=AF_INET
addr_ser.sin_port=htons(6666)
addr_ser.sin_addr.S_un.S_addr=inet_addr("127.0.0.1")
int ret = connect(sockClient,(SOCKADDR*)&addr_ser,sizeof(addr_ser))
if(ret!=0)
return -1
char buf[50]
int i=0
while(1)
{
memset(buf,0,50)
gets(buf) //输入字符串
if(strcmp(buf,"再见")==0)
{
break
}
else
{
send(sockClient,buf,strlen(buf)+1,0)
memset(buf,0,50)
recv(sockClient,buf,50,0)
printf("%s\n",buf)
}
}
closesocket(sockClient)
return 0}
客户端运行结果:
运行时要先运行服务器,在运行客户端。有为题追问吧~~
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)