invalid port number 怎么查看电脑的端口解决

君,已阅读到文档的结尾了呢~~
WinInet_HTTP异步处理方式的使用
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
WinInet_HTTP异步处理方式的使用
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口> 读取网页源码时出现乱码,求解决方案!该怎么处理
读取网页源码时出现乱码,求解决方案!该怎么处理
发布时间: & &
浏览:1 & &
回复:0 & &
悬赏:0.0希赛币
读取网页源码时出现乱码,求解决方案!我试过用三种方法去读取,碰到utf-8的网页,得到的中文全是乱码。以前用java和c#做过类似的功能,在java中通过转换流的编码,c#通过改http头都可以解决乱码问题。但在c++中似乎都不管用,求适合的解决方案。最好能通过设置http请求使得到的直接就是正确的内容,这样省效率。如果不行,那就用转换编码的方式把得到的乱码转成正确的中文。下面给出用过的三种方法,给大家做个参考。试过用socket,但成功率不理想,所以都是用http请求的方式。1 用Wininet的Interne系列函数  C/C++ code   #include &iostream& #include &stdio.h& #include &string& #include &windows.h& #include &wininet.h& #include &tchar.h& #include &stdlib.h& #pragma comment(lib, &Wininet.lib&)
…… string* html= HINTERNET hSession = InternetOpen(_T(&UrlTest&), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if(hSession != NULL){
HINTERNET hHttp = InternetOpenUrl(hSession, _T(&;), NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
if (hHttp != NULL){
//wprintf_s(_T(&%s\n&), url);
t_char Temp[MAXSIZE];
ULONG Number = 1;
while (Number & 0){
InternetReadFile(hHttp, Temp, MAXSIZE - 1, &Number);
Temp[Number] = '\0';
*html=*html+T
InternetCloseHandle(hHttp);
hHttp = NULL;
InternetCloseHandle(hSession);
hSession = NULL; } cout$<$*
这种方法无法改http头,但应该可以通过转码实现。2 用Wininet的Request系列函数  C/C++ code   #include &iostream& #include &stdio.h& #include &string& #include &windows.h& #include &wininet.h& #include &tchar.h& #include &stdlib.h& #pragma comment(lib, &Wininet.lib&)
…… HINTERNET hSession = InternetOpen(&MSDN SurfBear&,PRE_CONFIG_INTERNET_ACCESS,NULL,INTERNET_INVALID_PORT_NUMBER,0) ; HINTERNET hConnect = InternetConnect(hSession,&&,INTERNET_INVALID_PORT_NUMBER,&&,&&,INTERNET_SERVICE_HTTP,0,0) ; HINTERNET hHttpFile = HttpOpenRequest(hConnect, &GET&,&/&,HTTP_VERSION,NULL,0,INTERNET_FLAG_DONT_CACHE,0) ; PCHAR g_Accept_Encoding = &Accept-Encoding:utf-8\r\n&; HttpAddRequestHeaders(hHttpFile, g_Accept_Encoding, (DWORD)strlen(g_Accept_Encoding),HTTP_ADDREQ_FLAG_ADD & HTTP_ADDREQ_FLAG_REPLACE); BOOL bSendRequest = HttpSendRequest(hHttpFile, NULL, 0, 0, 0); char bufQuery[320] ; DWORD dwLengthBufQuery = sizeof(bufQuery); BOOL bQuery = HttpQueryInfo(hHttpFile,
HTTP_QUERY_CONTENT_LENGTH,
&dwLengthBufQuery,0) ; DWORD dwFileSize = (DWORD)atol(bufQuery) ; char* buffer = new char[dwFileSize+1] ; DWORD dwBytesRead=0 ; BOOL bRead=InternetReadFile(hHttpFile,
dwFileSize+1,
&dwBytesRead);
while (dwBytesRead & 0){
InternetReadFile(hHttpFile, buffer, dwFileSize + 1, &dwBytesRead);
buffer[dwBytesRead] = '\0';
} InternetCloseHandle(hHttpFile); InternetCloseHandle(hConnect) ; InternetCloseHandle(hSession) ;
这种方可以改http头,似乎也可以转码。3 用libcurl  C/C++ code   #include &iostream& #include &stdio.h& #include &string& #include &windows.h& #include &tchar.h& #include &include/curl/curl.h& #include &stdlib.h& #pragma comment(lib, &libcurl_imp.lib&) …… CURL * CURL curl = curl_easy_init(); if(curl) {
struct curl_slist *headers=NULL;
headers = curl_slist_append(headers, &Accept-Encoding:utf-8&);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_USERAGENT, &FireFox&);
curl_easy_setopt(curl, CURLOPT_URL,&&);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 6142 人关注过本帖
标题:为什么我在使用MSComm时显示端口无效invalid port number
等 级:新手上路
&&已结贴√
&&问题点数:20&&回复次数:3&&&
为什么我在使用MSComm时显示端口无效invalid port number
使用MSComm时显示端口无效‘invalid port number’,我在想是不是因为电脑本身不存在串口,所以不存在COM口,所以才提示MSComm设置的端口无效?
那如果计算机跟设备用USB转串口连接后,出现了COM口之后才能用MSComm么???
是这个原因么??
还是其他原因??
求大神解惑!!!
搜索更多相关主题的帖子:
等 级:贵宾
威 望:116
帖 子:1529
专家分:8563
&&得分:20&
要看你怎么初始化com端口,一般来说com1端口是标配,只是可能没提供实际接口(CMOS里关闭也有可能)
能编个毛线衣吗?
等 级:新手上路
回复 2楼 wmf2014
怎么初始化COM口?
什么是CMOS?
我给CommPort写入1、2、3、、、都是无效的。
等 级:贵宾
威 望:116
帖 子:1529
专家分:8563
帮你百度来的,红色的字是串口初始化部分,其他代码亦可作为参考。
MSComm控件具有丰富的与串口通信密切相关的属性,提供了对串口进行的多种操作,进而使串行通信变得十分简便。MSComm的控件属性较多,常用的属性如下:
1).CommPort:设置或返回串行端口号,缺省为1。
2).Setting:设置或返回串口通信参数,格式为“波特率,奇偶校验位,数据位,停止位”。例如:MSComm1.Setting:=9600,n,8,1
3).PortOpen:打开或关闭串行端口,格式为:MSComm1.PortOpen:={True|False}
4).InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。
5).InBufferCount:返回接收缓冲区内等待读取的字节数,可通过设置该属性为0来清空接收缓冲区。
6).RThreshold:该属性为一阈值,它确定当接收缓冲区内的字节个数达到或超过该值后就产生代码为ComEvReceive的OnComm事件。
7).SThreshold:该属性为一阈值,它确定当发送缓冲区内的字节个数少于该值后就产生代码为ComEvSend的OnComm事件。
8).InputLen:设置或返回接收缓冲区内用Input读入的字节数,设置该属性为0表示Input读取整个缓冲区的内容。
9).Input:从接收缓冲区读取一串字符。
10).OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。
11).OutBufferCount:返回发送缓冲区内等待发送的字节数,可通过设置该属性为0来清空缓冲区。  
12).OutPut:向发送缓冲区传送一串字符。
在通信过程中发生的错误或事件会引发OnComm事件,并由CommEvent属性值反映错误类型,程序根据该属性值来执行不同的操作。CommEvent属性值及其含义如下:
1).ComEvSend:值为1,发送缓冲区的内容少于SThreshold指定的值。
2).ComEvReceive:值为2,接收缓冲区内字符数达到RThreshold指定的值。
3).ComEvFrame:值为1004,硬件检测到帧错误。
4).ComEvRxOver:值为1008,接收缓冲区溢出。
5).ComEvTxFull:值为1010,发送缓冲区溢出。
6).ComEvRxParity:值为1009,奇偶校验错误。
7).ComEvEOF:值为7,接收数据中出现文件尾(ASCII码为26)字符。
4.应用实例
下面通过一个实例介绍Delphi利用MSComm通信控件,开发PC机通过串口对某试验厂路面荷载进行实时数据采集的编程技术。给出的程序代码具有通用性,并有详细的注释,可以直接或稍加改动就可用于其它数据采集或者实时控制程序中。
该项目上位机采用Delphi编写,数据采集仪采用研华ADAM5510作为下位机采集实时压力数据,采用AscII方式传送数据,数据传输速率为9600bps,1位开始位,8位数据位,1位停止位,无奇偶校验位。数据通信的具体格式为:。
程序用到的全局变量为:
ReceiveStr :S //接受Ascii码字符数据字符串
F1,F2,F3,F4,Fz,Fa:D //四路压力值数据,总压力值,平均压力值
程序中绘制的压力曲线采用TChart组件,变量定义为:
FChart: TC
1).串口初始化
with MSComm do
  CommPort:=1; //使用Com1
  Settings:=9600,n,8,1; //设置通信口参数
  InputLen:=1; //设置Input一次从接受缓冲区读取字节数为1
  InBufferCount:=0; //清除接受缓冲区
  OutBufferCount:=0; //清除发送缓冲区
  InBufferSize:=50; //设置接受缓冲区为50字节
  OutBufferSize:=2; //设置发送缓冲区为2字节
  RThreshold:=1; //设置接受一个字节产生OnComm事件
  InputMode:=ComInputModeT // 设置接受数据模式为二进制方式
If (not PortOpen )then //判断通信口是否打开
  PortOpen:=True
  ShowMessage(串口已经打开!);
2).数据接收与处理
为了达到实时数据采集的目的,实时数据采集处理程序采用MSComm的事件驱动方式。
procedure TForm1.MSCommComm(Sender: TObject);
i  mEvent = comEvReceive then //接受事件
  buffer:=MSComm.I //读取接受到的数据
  sTemp:=
  cNow:=sTemp[1];
  if((cLast=Chr(13))and(cNow=Chr(10)))then
  sF1:=Trim(sF1);
  dF1:=StrToFloat(sF1);
  with SeriesDepth do //利用TChart绘制深度曲线
  tmpX:=XValues[1]-XValues[0];
  Delete(0);
  AddXY( XValues.Last+tmpX,dF1,,clGed);
  sF1:=;
if((cLast&&Chr(13))and(cNow&&Chr(10)))then
  sF1:=sF1+cN
  cLast:=cN
3).串口关闭
If (MSComm.PortOpen) then
MSComm.PortOpen:=F
能编个毛线衣吗?
版权所有,并保留所有权利。
Powered by , Processed in 0.142630 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved}

我要回帖

更多关于 怎么查看端口号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信