winsock2之最简单的win socket编程 模拟授时服务器 php访问
来源:互联网 发布:linux dd iso 编辑:程序博客网 时间:2024/05/13 14:55
winsock2之最简单的win socket编程
你看到的这个文章来自于http://www.cnblogs.com/ayanmw
server.cpp
#include <WINSOCK2.H>#include <stdio.h>#pragma comment(lib,"ws2_32.lib")int main(int argc,char **argv){ //创建套接字 WORD myVersionRequest; WSADATA wsaData; myVersionRequest=MAKEWORD(1,1); int err; err=WSAStartup(myVersionRequest,&wsaData); if (!err){ printf("已打开套接字\n"); }else{ printf("ERROR:嵌套字未打开!"); return 1; } //进一步绑定套接字 SOCKET serSocket=socket(AF_INET,SOCK_STREAM,0);//创建了可识别套接字 //需要绑定的参数 SOCKADDR_IN addr; addr.sin_family=AF_INET; addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//ip地址 addr.sin_port=htons(6000);//绑定端口 bind(serSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR));//绑定完成 listen(serSocket,5);//其中第二个参数代表能够接收的最多的连接数 ////////////////////////////////////////////////////////////////////////// //开始进行监听 ////////////////////////////////////////////////////////////////////////// SOCKADDR_IN clientsocket; int len=sizeof(SOCKADDR); while (1) { SOCKET serConn=accept(serSocket,(SOCKADDR*)&clientsocket,&len);//如果这里不是accept而是conection的话。。就会不断的监听 char sendBuf[100]; sprintf(sendBuf,"hello, %s !",inet_ntoa(clientsocket.sin_addr));//找对对应的IP并且将这行字打印到那里 printf("Send:%s\n",sendBuf); send(serConn,sendBuf,strlen(sendBuf)+1,0); char receiveBuf[100];//接收 recv(serConn,receiveBuf,sizeof(receiveBuf),0); printf("recv:%s\n",receiveBuf); closesocket(serConn);//关闭 WSACleanup();//释放资源的操作 return 0; } return 1;}
client.cpp
#include <WINSOCK2.H>#include <stdio.h>#pragma comment(lib,"ws2_32.lib")int main(int argc,char **argv){ int err; WORD versionRequired; WSADATA wsaData; versionRequired=MAKEWORD(1,1); err=WSAStartup(versionRequired,&wsaData);//协议库的版本信息 if (!err) { printf("客户端嵌套字已经打开!\n"); }else{ printf("ERROR:客户端的嵌套字打开失败!\n"); return 1;//结束 } SOCKET clientSocket=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN clientsock_in; clientsock_in.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); clientsock_in.sin_family=AF_INET; clientsock_in.sin_port=htons(6000); //bind(clientSocket,(SOCKADDR*)&clientsock_in,strlen(SOCKADDR));//注意第三个参数 //listen(clientSocket,5); connect(clientSocket,(SOCKADDR*)&clientsock_in,sizeof(SOCKADDR));//开始连接 char receiveBuf[100]; if(true){ printf("Send:%s\n","hello,this is client"); send(clientSocket,"hello,this is client",strlen("hello,this is client")+1,0); recv(clientSocket,receiveBuf,101,0); printf("Recv:%s\n",receiveBuf); closesocket(clientSocket); WSACleanup(); } return 0;}
编译运行:
call "C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"cl server.cppcl client.cppstart cmd /k serverstart cmd /k clientcmd
http://www.cnblogs.com/xianqingzh/archive/2009/02/03/1382963.html
转载请注明出处:http://www.cnblogs.com/ayanmw 我会很高兴的!
转载请注明出处:http://www.cnblogs.com/ayanmw 多谢
------------------------------------------------------------------------------------------------
#include <WINSOCK2.H>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
int main(int argc,char **argv)
{
//创建套接字
WORD myVersionRequest;
WSADATA wsaData;
myVersionRequest=MAKEWORD(1,1);
int err;
err=WSAStartup(myVersionRequest,&wsaData);
if (!err){
printf("已打开套接字\n");
}else{
printf("ERROR:嵌套字未打开!");
return 1;
}
//进一步绑定套接字
SOCKET serSocket=socket(AF_INET,SOCK_STREAM,0);//创建了可识别套接字
//需要绑定的参数
SOCKADDR_IN addr;
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//ip地址
addr.sin_port=htons(6000);//绑定端口
bind(serSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR));//绑定完成
listen(serSocket,5);//其中第二个参数代表能够接收的最多的连接数
//////////////////////////////////////////////////////////////////////////
//开始进行监听
//////////////////////////////////////////////////////////////////////////
SOCKADDR_IN clientsocket;
int len=sizeof(SOCKADDR);
while (1)
{
SOCKET serConn=accept(serSocket,(SOCKADDR*)&clientsocket,&len);//如果这里不是accept而是conection的话。。就会不断的监听
char sendBuf[100]="56771 14-04-24 08:29:20 50 0 0 774.4 UTC(NIST) *";
//sprintf(sendBuf,"hello, %s !",inet_ntoa(clientsocket.sin_addr));//找对对应的IP并且将这行字打印到那里
//printf("Send:%s\n",sendBuf);
//send(serConn,sendBuf,strlen(sendBuf)+1,0);
send(serConn,sendBuf,strlen(sendBuf)+1,0);
//char receiveBuf[100];//接收
//recv(serConn,receiveBuf,sizeof(receiveBuf),0);
//printf("recv:%s\n",receiveBuf);
closesocket(serConn);//关闭
}
WSACleanup();//释放资源的操作
return 0;
//return 1;
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> getDateTime.php </title>
<meta charset="UTF-8" >
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<body>
<?php
//$fp=fsockopen('time.nist.gov',13,$errno,$errstr,90);
$fp=fsockopen('localhost',6000,$errno,$errstr,90);
$ufc = explode(' ',fread($fp,date('Y')));
var_dump($ufc);
echo '<hr>';
$date = explode('-',$ufc[1]);
$processdate = $date[1].'-'.$date[2].'-'. date('Y').' '.$ufc[2];
var_dump($processdate);
echo '<hr>';
switch($ufc[5])
{
case 0: echo '精确'; break;
case 1: echo '误差:0-5s'; break;
case 2: echo '误差: > 5s'; break;
default: echo '硬件出错!'; break;
}
echo gmttolocal($processdate,8); // 中国
function gmttolocal($mydate,$mydifference)
{
$datetime = explode(" ",$mydate);
$dateexplode = explode("-",$datetime[0]);
$timeexplode = explode(":",$datetime[1]);
$unixdatetime = mktime($timeexplode[0]+$mydifference,$timeexplode[1],0,$dateexplode[0],$dateexplode[1],$dateexplode[2]);
return date("m/d/Y H:i:s",$unixdatetime);
}
?>
</body>
</html>
- winsock2之最简单的win socket编程 模拟授时服务器 php访问
- WinSock2编程之打造完整的SOCKET池
- WinSock2编程之打造完整的SOCKET池
- WinSock2编程之打造完整的SOCKET池
- WinSock2编程之打造完整的SOCKET池
- WinSock2编程之打造完整的SOCKET池
- WinSock2编程之打造完整的SOCKET池
- WinSock2编程之打造完整的SOCKET池
- WinSock2编程之打造完整的SOCKET池
- WinSock2编程之打造完整的SOCKET池
- WinSock2编程之打造完整的SOCKET池
- socket编程之简单的TCP服务器
- linux网络编程之socket(三):最简单的回射客户/服务器程序
- linux网络编程之socket:最简单的回射客户/服务器程序、time_wait 状态
- Linux socket编程-最简单的服务器和客户端程序
- Linux socket编程-最简单的服务器和客户端程序
- VC编程(1)Socket网络编程 连接邮箱服务器+授时服务器
- linux网络编程之socket(三):最简单的回射客户/服务器程序、time_wait 状态
- genymotion中虚拟机存储路径更改
- java语言中的初始化和垃圾清理
- Android 获取手机的一些基本信息类
- 【转】Google Maps Android API V2的使用及问题解决
- 【转】Android游戏开发(一)
- winsock2之最简单的win socket编程 模拟授时服务器 php访问
- 【转】如何向App Sotre提交应用
- 什么是Shader
- ACM HDU 1559 最大子矩阵
- HTML5学习(一)---视频
- 大型网站架构演化历程
- HTML5学习(二)---音频
- WAMPServer多站点配置
- HTML5学习(三)---拖放