1. tcpclient C++ 如何向服务端发送时间戳
GetTickCount();可以获得微秒级时间!用这函数!
2. 求大神用C/C++语言写一段代码,建立TCP连接后实现用HTTP协议向目的地址发送GET请求
在浏览器上测试这个get请求,用抓包工具可以看到发送的tcp数据,照抄send。
3. 使用TCP时,服务器端如何知道是否有客户端发送连接请求?我使用WINSOCK控件做的。c++
看你是用同步的还是异步的。
同步:while死循环中 accept
异步:在FD_ACCEPT事件中accept
4. c++中,如何链接一个服务器(提供ip和端口),并从服务器上获取消息,发送消息给服务器。TCP协议。
socket
或者telnet
5. 用c++写的tcp连接程序
注意:server/client都需要再连接一个库文件:
project->setting->link:object/library modules 添加:ws2_32.lib
需要先启动server,再启动client
这个需要手动添加,都不要忘记了。
Server代码:
#include
#include
#include
//注意:需要再连接一个库文件:project->setting->link:object/library modules添加:ws2_32.lib
void main()
{
WORD wVersionRequested;//版本号
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );//1.1版本的套接字
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}//加载套接字库,加裁失败则返回
if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}//如果不是1.1的则退出
SOCKET sockServer = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrServer;//地址结构信息
addrServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//IP信息,一般设置为这个就可以
addrServer.sin_family=AF_INET;
addrServer.sin_port=htons(6000);//端口
bind(sockServer,(SOCKADDR *)&addrServer,sizeof(SOCKADDR));//绑定
listen(sockServer,5);//监听
SOCKADDR_IN sockClient;
int IClientSockLen=sizeof(SOCKADDR);
while(1){
SOCKET sockConn;
sockConn=accept(sockServer,(SOCKADDR *)&sockClient,&IClientSockLen);//接受连接请求
//在下面加入你要实现的代码
closesocket(sockConn);
}//while
WSACleanup();
}//main
Client代码:
#include
#include
#include
//注意:需要再连接一个库文件:project->setting->link:object/library modules添加:ws2_32.lib
void main()
{
WORD wVersionRequested;//版本号
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );//1.1版本的套接字
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}//加载套接字库,加裁失败则返回
if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}//如果不是1.1的则退出
SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0);//创建socket SOCK_STREAM表示TCP
SOCKADDR_IN addrClient; //设置相关地址结构
addrClient.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");//把127.0.0.7改为你的server端的ip地址
addrClient.sin_family=AF_INET;
addrClient.sin_port=htons(6000);//设置server端端口号,你可以随便设置
//连接
int x=connect(sockClient,(SOCKADDR*)&addrClient,sizeof(SOCKADDR));
//在下面写你要实现的功能的代码
closesocket(sockClient);//关闭
WSACleanup();
}//main
6. Linux下c++ 服务端tcp通讯包延迟,是否有特殊的设定需要
客户端向服务器端发送请求,服务器收到请求做相应的处理,将处理结果传回客户端。下面采用TCP协议实现服务器和客户端之间的连接。1. 客户端约定双方的传输协议(UDP或者TCP),根据传输协议创建socket;服务器的IP地址和端口号;连接服务器;获取服务器传递回来的数据。[cpp]#include #include types.h> #include socket.h> #include time.h> #include #include #includein.h> #includeinet.h> #include errno.h> #include #include #include using namespace std; const int MAXLINE=1024; int main(int argc,char** argv) {int sockfd,n;char recvline[MAXLINE+1];struct sockaddr_in servaddr;if(argc!=2){cout0){recvline[n]=0;if(fputs(recvline,stdout)==EOF){cout #include socket.h> #include time.h> #include #include #includein.h> #includeinet.h> #include errno.h> #include #include #include using namespace std; const int MAXLINE=1024; int main(int argc,char** argv) {int sockfd,n;char recvline[MAXLINE+1];struct sockaddr_in servaddr;if(argc!=2){cout0){recvline[n]=0;if(fputs(recvline,stdout)==EOF){cout #include socket.h> #include time.h> #include #include #includein.h> #includeinet.h> #include errno.h> #include #include #include #include using namespace std;const int MAXLINE=1024; int main(int argc,char **argv) {int listenfd,connfd;struct sockaddr_in servaddr;char buff[MAXLINE];time_t ticks;listenfd=socket(AF_INET,SOCK_STREAM,0);//建立socketif(listenfd #include socket.h> #include time.h> #include #include #includein.h> #includeinet.h> #include errno.h> #include #include #include #include using namespace std;const int MAXLINE=1024; int main(int argc,char **argv) {int listenfd,connfd;struct sockaddr_in servaddr;char buff[MAXLINE];time_t ticks;listenfd=socket(AF_INET,SOCK_STREAM,0);//建立socketif(listenfd<0){cout<<"socket error "<<strerror(errno)<<endl;exit(0);}memset(&servaddr,0, sizeof(servaddr));servaddr.sin_family=AF_INET;servaddr.sin_port=htons(8080);servaddr.sin_addr.s_addr=htonl(INADDR_ANY);int bindfd=bind(listenfd,(sockaddr*)&servaddr,sizeof(servaddr));//将地址和端口绑定到socketif(bindfd<0){cout<<"bind error"<<bindfd<<endl;exit(0);}listen(listenfd,MAXLINE);//监听连接,一直阻塞,直到有连接出现while(1){connfd=accept(listenfd,(sockaddr*)NULL,NULL);//接收连接传递的数据ticks=time(NULL);snprintf(buff,sizeof(buff),"%.24s\r\n",ctime(&ticks));cout<<strlen(buff)<<endl;write(connfd,buff,strlen(buff));//将传递的数据写回到socket中close(connfd);}return 0; }
7. c++编写的tcp协议客户端和服务器程序问题
首先你要确保两个机器能互相ping通(网络确实是畅通的才可以!)
你服务端绑定的IP估计是用的127.0.0.1
//绑定IP和端口
sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(8888);
sin.sin_addr.S_un.S_addr = INADDR_ANY; //这里!!
或者,你的客户端使用的是127.0.0.1
sockaddr_in serAddr;
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(8888);
serAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //127.0.0.1是本机的一个loopback地址,你应该写成对端的SERVER的实际ip
或者
SERVER端的机器上有防火墙挡住了你的应用访问。
两个方面,一个是程序代码上的,一个是机器环境上的。自己多方面检查一下吧。
8. tcp ip 连接 有效时间 C++
1.是一直有效。
2.不会阻塞,recv会返回SOCKET_ERROR。
3.直接关闭socket连接,重连
4.send会返回SOCKET_ERROR
5.中途断网只能重新连接