很久没有回来过这里了,这个暑假还有大概20天就要结束了,我现在在宿舍,我提前了二十天回学校,前天晚上21:00多回到宿舍的,宿舍没有电,只有我一个人,幸好隔壁宿舍tp也来了,不然不敢想象对于我这样一个胆小的人来说要怎么过。
今天呆在宿舍基本上算了看了一天的书敲了一天的代码,其实也没敲多少,主要是刚刚接触网络编程,对于socket那部分看了很久也看得不太懂,写那个TCP/IP和UDP的时候都不知道怎么下手,照着书上敲了一遍的代码终于算是敲完了,可是运行起来的时候DOS窗口下全是烫烫烫烫,无语死了。今天在宿舍坐了一天屁股有点吃不消的样子。现在学校人不是很多,好安静,不过就是热,非常的热,有点受不了。好了下面是我们今天写的代码。
TCP/IP服务器
*#include<Winsock2.h>
#include<stdio.h>
void main() {
//创建套接字 WORD wVerstoonRequested;
WSADATA wsaData;
int err;
wVerstoonRequested =MAKEWORD (1,1); //保存请求得到的版本号
err=WSAStartup (wVerstoonRequested ,&wsaData ); //调用WSAStartup函数加载套接字库,如果为0则退出
if(err!=0) { return ; }
//判断得到的版本号低字节和高字节是不是都等于1
if(LOBYTE(wsaData .wVersion) !=1 || HIBYTE (wsaData .wVersion )!=1)
{
WSACleanup (); 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 sendBuff[100];
sprintf (sendBuff ,"Welcome %s tomorrow is qixi",inet_ntoa (addrClient .sin_addr ));
//发送数据
send(sockConn ,sendBuff ,strlen (sendBuff )+1,0); char recvBuf[100];
//接收数据
recv(sockConn ,recvBuf,100,0);
//打印接收的数据
printf("%s ",recvBuf ); //关闭套接字 closesocket (sockConn );
}
}*/
TCP/IP客户端
/*#include<Winsock2.h>
#include<stdio.h>
void main() {
//创建套接字 WORD wVerstoonRequested;
WSADATA wsaData;
int err;
wVerstoonRequested =MAKEWORD (1,1); //保存请求得到的版本号 err=WSAStartup (wVerstoonRequested ,&wsaData ); //调用WSAStartup函数加载套接字库,如果为0则退出 if(err!=0) {
return ;
}
//判断得到的版本号低字节和高字节是不是都等于1
if(LOBYTE(wsaData .wVersion) !=1 || HIBYTE (wsaData .wVersion )!=1) {
WSACleanup ();
return ; }
//创建套接字
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family =AF_INET;
addrSrv.sin_port=htons(6000);
//向服务器发出链接请求
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
//接收数据
char recvBuf[100]; recv(sockClient,recvBuf,100,0); printf("%s ",recvBuf);
//发送数据
send(sockClient ,"who is my love",strlen("who is my love")+1,0);
//关闭套接字
closesocket (sockClient ); //WSACleanup ();
}*/
UDP 服务器
#include<Winsock2.h>
#include<stdio.h>
void main() {
//加载套字库
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested =MAKEWORD (1,1);
err=WSAStartup(wVersionRequested ,&wsaData );
if(err!=0) { return ; }
if(LOBYTE (wsaData .wVersion )!=1 ||HIBYTE (wsaData .wVersion )!=1) {
WSACleanup ();
return ; }
//创建套接字
SOCKET sockSrv=socket(AF_INET ,SOCK_DGRAM ,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));
//等待并接收数据
SOCKADDR_IN addrClient; //地址结构变量
int len=sizeof (SOCKADDR);
char recvBuf[100];
recvfrom (sockSrv ,recvBuf ,100,0,(SOCKADDR *)&addrClient,&len );
printf ("%s ",recvBuf );
//关闭套接字
closesocket (sockSrv );
WSACleanup (); }
客户端
#include<stdio.h>
void main() {
//加载套字库
WORD wVersioRequested;
WSADATA wsaData;
wVersioRequested =MAKEWORD (1,1);
int err; err=WSAStartup (wVersioRequested ,&wsaData );
if(err!=0) { return ; }
if(LOBYTE (wsaData .wVersion )!=1 || HIBYTE (wsaData .wVersion )!=1) {
WSACleanup ();
return ; }
//创建套接字 SOCKET sockClient=socket(AF_INET ,SOCK_DGRAM ,0);
SOCKADDR_IN addSrv;
addSrv .sin_addr .S_un .S_addr =inet_addr ("182.91.232.65" );
addSrv .sin_family =AF_INET; addSrv .sin_port =htons (6000);
//发送数据
sendto(sockClient ,"Hello",strlen("Hello")+1,0,(SOCKADDR *)&addSrv ,sizeof (SOCKADDR));
//关闭套接字
closesocket (sockClient );
WSACleanup (); }
今天就这样吧,困了怎么睡觉了。明天七夕,世界晚安。