我试图在端口号绑定我的套接字(服务器套接字)8000.它起作用并为我做了工作.在代码的最后我也关闭了套接字.在下一刻我再次运行我的代码,它向我显示该地址已被使用.我已经打印了错误值的含义,strerror(errno);以查看我的代码是否在每个点都正常工作.要检查端口是否空闲,我使用了netstat它,但它显示端口号8000是免费的.它发生在我身上很多次.每次我等待几秒钟然后它再次开始工作.我正在使用c语言.那么我的操作系统对于这种行为的原因是什么?
再过几秒钟后,我运行代码然后就可以了.
anirudh@anirudh-Aspire-5920:~/Desktop/testing$ sudo ./a.out
Socket Creation: Success
File open: Success
Socket Bind: Address already in use
Socket Listen: Address already in use
^C
anirudh@anirudh-Aspire-5920:~/Desktop/testing$ sudo netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1348/lighttpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 984/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1131/cupsd
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1211/mysqld
tcp6 …Run Code Online (Sandbox Code Playgroud) 我在Linux下使用C语言编写了一个简单的服务器,它在localhost上侦听端口80.现在,当我从浏览器google chrome向程序发送请求时,它收到2个请求,而当我从firefox发送时只收到一个请求.
我在浏览器中输入的URL是:http://localhost/xyz.html
当我在CHROME中输入URL时输出
root@anirudh-Aspire-5920:/home/anirudh/workspace/DCMTOL# ./DCMTOL_RUN
Inside HTTP server Handler
Inside HTTP request Handler
**Detected request: clientsocket_fd = 6 clientportnumber = 38027**
GET /xyz.html HTTP/1.1
Host: localhost
Connection: keep-alive
Cache-Control: max-age=0
Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Inside HTTP request Handler
**Detected request: clientsocket_fd = 7 clientportnumber = 38029**
^C
root@anirudh-Aspire-5920:/home/anirudh/workspace/DCMTOL#
Run Code Online (Sandbox Code Playgroud)
第二个请求不发送任何数据,所以我的代码在读取调用时等待,所以我必须终止它'^ C'.
我在FIREFOX中输入URL时的输出
root@anirudh-Aspire-5920:/home/anirudh/workspace/DCMTOL# ./DCMTOL_RUN
Inside HTTP server Handler
Inside HTTP request Handler
**Detected …Run Code Online (Sandbox Code Playgroud) 所以我试图在Linux环境下学习C语言的套接字编程中SO_KEEPALIVE选项的用法.
我创建了一个服务器套接字并使用我的浏览器连接到它.它很成功,我能够阅读GET请求,但我仍然坚持使用SO_KEEPALIVE.
我查了这个链接keepalive_description@tldg.org但我找不到任何显示如何使用它的例子.
一旦我在accept()函数上检测到客户端的请求,我就在客户端套接字上设置SO_KEEPALIVE选项值1.现在我不知道如何检查客户端是否已关闭?,如何更改探测发送之间的时间间隔等.
我的意思是如何获得客户端关闭的信号(无需在客户端读取或写入...我认为当探测器未从客户端回复时我会得到一些信号),如何在设置选项后对其进行编程SO_KEEPALIVE上.
此外,如果假设探测器每隔3秒发送一次并且客户端介于两者之间,我将不会知道客户端已关闭,我可能会收到SIGPIPE.
无论如何,重要的是我想知道如何在代码中使用SO_KEEPALIVE.
在此先感谢一吨!
这是我的HTML代码片段.
<div ng-repeat="boxName in boxNameList">
<div ng-class="myBoxes.{{boxName}}">{{boxName}}</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想做的是: 我创建了3个div元素,它们将使用上面写的代码片段位于屏幕的顶部.每个div元素将使用css给出一个盒子的形状.盒子(div)可以是红色作为背景,也可以是黑色作为背景.
这两种颜色的CSS是:
.redBackground{
background-color: red;
}
.blackBackground{
background-color: black;
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器的一个片段:
$scope.boxNameList=['Box1','Box2','Box3'];
$scope.myBoxes={
Box1: "redBackground",
Box2: "blackBackground",
Box3: "blackBackground"
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我$scope.myBoxes作为一个静态Json,但在运行时我计划生成Json代码,以便我可以动态地为我的框分配背景颜色.
我面临的问题:问题是我根本无法看到带有颜色的盒子.在这种情况下,您可以看到的ng-class变量名也是动态生成的.如果我不使用ng-repeat并且不动态生成ng-class变量名,那么它可以正常工作.对于如下面的时候我动态改变varibales的价值给出的片段myBoxes.Box1 myBoxes.Box2,并myBoxes.Box3随后它完美的作品.
<div ng-class="myBoxes.Box1">Box1</div>
<div ng-class="myBoxes.Box2">Box2</div>
<div ng-class="myBoxes.Box3">Box3</div>
Run Code Online (Sandbox Code Playgroud)
但是,如果我动态生成ng-class变量,"myBoxes.{{boxName}}"那么它的行为就不像变量.我相信会有更好的方法来实现我想要做的事情但是我无法在谷歌搜索/反复试验之后找到它.如果有人能帮助我,我会很高兴的.
我正在尝试使用Java套接字连接到服务器.我正在尝试从端口80连接到90
int port;
Socket clientsocket;
String hostname = "www.google.com";
for(port = 80;port<=90; port++){
try{
clientsocket = new Socket(hostname,port);
System.out.println("Connection at port " + port + "\t" + clientsocket.isConnected());
clientsocket.close();
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试连接到任何网站,如google.com或w3schools.com时,我的程序挂起了socket()除80之外的端口号码的呼叫.由于这些网站不在端口81-90上提供,它应该引发异常,但它被阻止.对于80端口,它工作正常.当我尝试连接到我的机器上安装的apache服务器时,它不会阻止任何端口号并给我连接拒绝错误,这是明显的行为.那么为什么会这样呢?提前致谢.
1.为什么我们需要链接非标准库/包含非标准头文件,当它们已存在于正确的文件夹中时
anirudh@anirudh-Aspire-5920:~/Documents/DUMP$ locate libpthread
/lib/libpthread-2.12.1.so
/lib/libpthread.so.0
/usr/lib/libpthread.a
/usr/lib/libpthread.so
/usr/lib/libpthread_nonshared.a
/usr/lib/xen/libpthread.a
/usr/lib/xen/libpthread_nonshared.a
anirudh@anirudh-Aspire-5920:
Run Code Online (Sandbox Code Playgroud)
人工页面ld.so/ld-linux.so - dynamic linker/loader说搜索程序所需的必要库In the default path /lib, and then /usr/lib.
当我的库的.so文件已经存在于/ lib文件夹中时,为什么我需要专门链接它.该-l选项还用于链接静态库.但是当我对进程进行pmap时,我发现.so正在使用带有扩展名的pthread动态库,而不是带有扩展名的pthread .a.同样
anirudh@anirudh-Aspire-5920:~/Documents/DUMP$ locate mysql.h
/usr/include/mysql/mysql.h
anirudh@anirudh-Aspire-5920:~/Documents/DUMP$
Run Code Online (Sandbox Code Playgroud)
当它已经存在于/usr/include作为所有头文件的标准文件夹的文件夹中时,为什么我需要使用-I选项专门包含它.