向本地主机发送daytime请求

 1 #pragma once
 2 #include<stdlib.h>
 3 #include<stdio.h>
 4 #include<string.h>
 5 #include<winsock.h>
 6
 7 void errexit(const char*, ...);
 8
 9 #ifndef INADDR_NONE
10 #define INADDR_NONE 0xfffffff
11 #endif
12
13
14 SOCKET connectsock(const char *host, const char *service,
15                    const char *transport) {
16     struct hostent *phe;
17     struct servent *pse;
18     struct protoent *ppe;
19     struct sockaddr_in sin;
20     int s, type;
21
22     memset(&sin, 0, sizeof(sin));
23     sin.sin_family = AF_INET;
24     if (pse = getservbyname(service, transport))
25         sin.sin_port = pse->s_port;
26     else if ((sin.sin_port = htons((u_short)atoi(service))) == 0)
27         errexit("can‘t get\"%s\"service entry\n", service);
28     if (phe = gethostbyname(host))
29         memcpy(&sin.sin_addr, phe->h_addr, phe->h_length);
30     else if ((sin.sin_port = inet_addr(host)) == INADDR_NONE)
31         errexit("can‘t get\"%s\"host entry\n", host);
32     if((ppe = getprotobyname(transport)) == 0)
33         errexit("can‘t get\"%s\"protocol entry\n", transport);
34
35     if (strcmp(transport, "udp") == 0)
36         type = SOCK_DGRAM;
37     else
38         type = SOCK_STREAM;
39
40     s = socket(PF_INET, type, ppe->p_proto);
41     if(s == INVALID_SOCKET)
42         errexit("can‘t create socket:%d\n",GetLastError());
43
44     if(connect(s,(struct sockaddr *)&sin,sizeof(sin)) == SOCKET_ERROR)
45         errexit("can‘t connect\n", GetLastError());
46     return s;
47 }
48
49
50
51
52 void errexit(const char *format, ...) {
53     va_list args;
54     va_start(args, format);
55     vfprintf(stderr, format, args);
56     va_end(args);
57     WSACleanup();
58     exit(1);
59 }
 1 #include<stdlib.h>
 2 #include<stdio.h>
 3 #include<winsock.h>
 4 #include"conect.h"
 5
 6 void tcpdaytime(const char*, const char *);
 7 void errexit(const char*, ...);
 8 SOCKET connecttcp(const char*, const char *);
 9
10 #define LINELEN 128
11 #define WSVERS MAKEWORD(2,0)
12
13
14 int main(int argc, char *argv[]) {
15     char *host = "localhost";
16     char *service = "daytime";
17     WSADATA wsadata;
18     switch (argc) {
19     case 1:
20         host = "localhost";
21         break;
22     case 3:
23         service = argv[1];//没有break
24     case 2:
25         host = argv[1];
26         break;
27     default:
28         fprintf(stderr, "usage:tcpdaytime[host[port]]\n");
29         exit(1);
30     }
31     if (WSAStartup(WSVERS, &wsadata) != 0)
32         errexit("wsastartup error\n");
33     tcpdaytime(host, service);
34     WSACleanup();
35     return 0;
36 }
37
38
39 void tcpdaytime(const char *host, const char *service) {
40     char buf[LINELEN + 1];
41     SOCKET s;
42     int cc;
43     s = connecttcp(host, service);
44     cc = recv(s, buf, LINELEN, 0);
45     while (cc != SOCKET_ERROR && cc > 0) {
46         buf[cc] = ‘\0‘;
47         (void)fputs(buf, stdout);
48         cc = recv(s, buf, LINELEN, 0);
49     }
50     closesocket(s);
51 }
52
53 SOCKET connecttcp(const char*host, const char *service) {
54     return connectsock(host, service, "tcp");
55 }
时间: 2024-10-16 22:10:33

向本地主机发送daytime请求的相关文章

webpack + vue 向本地后端发送http请求跨域问题

一.问题描述 前端: webpack + vue + axios 后端: wamp + php 用webpack访问前端页面是需要一个端口的,后端服务器也是需要一个端口的,端口不同,在本地调试接口就出现问题. 二.解决方法(不使用jsonp) 1)安装   proxy-middleware  插件  npm install proxy-middleware --save-dev 2)将项目目录下 build 文件夹下 dev-sever.js 中的 proxyMiddleware 改名为 htt

“ping”命令的原理就是向对方主机发送UDP数据包,HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”

Socket  是一套建立在TCP/IP协议上的接口不是一个协议 应用层:  HTTP  FTP  SMTP  Web 传输层:  在两个应用程序之间提供了逻辑而不是物理的通信(TCP  UDP) TCP  可靠的  面向连接的服务 UDP  不可靠的  无连接的服务 只要底层实现TCP IP协议  都可以用socket进行通信 1.TCP和UDP 1.1 TCP连接 TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往

本地主机作服务器解决AJAX跨域请求访问数据的方法

近几天学到ajax,想测试一下ajax样例,由于之前在阿里租用的服务器过期了,于是想着让本地主机既做服务器又做客户端,只是简单地测试,应该还行. 于是,下载了xampp,下载网址http://www.apachefriends.org ,只需要解压傻瓜式地安装就可以. 找到安装软件的目录,点击xampp-control.exe然后启动Apache服务, 打开浏览器,在地址栏输入localhost,出现如下图片,说明安装启动都没问题 现在编写两个简单的文本,一个txt文件,一个html代码: 截图

本地主机连不上服务器,外网却能正常连接

转载:http://tech.sina.com.cn/sinahelp/2002-12-31/113/262.html 在工作中,经常有用户反映不能链接到新浪的某一个页面,或者使用Outlook连结不到新浪的邮件服务器(错误代码一般是0x800CCC0D,0x800CCC0E,0x800CCC0F),以及登陆某一个页面或者收发邮件特别慢的话,可以教用户使用下面的网络命令进行测试.最常用的网络命令有下面几个:ping,tracert,winipcfg和ipconfig. 其中ping是用户检测用户

.net core使用HttpClient发送代理请求_程序内抓包_Fiddler抓包

原文:.net core使用HttpClient发送代理请求_程序内抓包_Fiddler抓包 前言:  通过Fiddler抓取浏览器请求数据,相信大家已经都会用了,我们知道Fiddler是通过在本机计算器添加一个默认的代理服务器来实现的抓包数据的,端口号为:8888. 其实当我们打开Fiddler的设置也可以看到: 然后查看本地计算器的网络代理设置: 基于上面的原理,Fiddler就实现了经过本机计算器请求的数据抓包了... 那么,我们通过C#代码,在.net Core中使用HttpClient

每天一个linux命令13之curl发送http请求

一.get请求 curl "http://www.baidu.com"  如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地 curl -i "http://www.baidu.com"  显示全部信息 curl -l "http://www.baidu.com" 只显示头部信息 curl -v "http://www.baidu.com" 显示get请求全过程解析 wget "http://www.ba

nodejs向远程服务器发送post请求----融云Web SDK/客户端获取token

最近要用到一个叫融云的及时通讯的SDK,在获取token这个步骤的时候有点卡顿,以防以后碰到类似的问题,再此记录一下. 客户端通过融云 SDK 每次连接服务器时,都需要向服务器提供 Token,以便验证身份,流程如下: 流程如下: 1.客户端获取用户id,并向服务器请求token(注意这里的服务器不是融云的服务器,而是客户端的服务端) 2.客户端的服务端接收到token请求后,向融云的服务器请求token 3.融云服务器接受到token请求,返回token给客户端的服务端. 4.客户端的服务端接

解决浏览器跨域限制发送ajax请求

一.什么是浏览器跨域限制?本质是什么? 所谓浏览器跨域限制,其实是为了数据安全的考虑由Netscape提出来限制浏览器跨域访问数据的策略,这是一中约定,正式叫法为浏览器同源策略,目前已经在大多数浏览器中支持. 本质上,所谓浏览器同源策略即:不允许浏览器访问跨域的Cookie,ajax请求跨域接口等.也就是说,凡是访问与自己不在相同域的数据或接口时,浏览器都是不允许的. 最常见的例子:对于前后端完全分离的Web项目,前端页面通过rest接口访问数据时,会出现如下问题: 不允许发送POST请求:在发

NSURLConnection发送GET请求

1 // ViewController.m 2 // 04-掌握-NSURLConnection发送GET请求 3 // 4 // Created by xiaomage on 16/2/22. 5 // Copyright ? 2016年 小码哥. All rights reserved. 6 // 7 8 #import "ViewController.h" 9 10 @interface ViewController ()<NSURLConnectionDataDelega