我刚刚开始学习套接字(
Linux)的基础知识.我以一个小例子尝试过我的手,但它不起作用,我不知道有什么问题.
我收到“连接拒绝”错误消息.
这是我的代码:
#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h> #include <stdio.h> #include <string.h> #include <errno.h> int main() { int c; c = socket(AF_INET,SOCK_STREAM,0); if (c < 0) { printf("Error in creating socket! %s\n",strerror(errno)); return 1; } struct sockaddr_in server; memset(&server,sizeof(server)); server.sin_port = htons(1234); server.sin_family = AF_INET; server.sin_addr.s_addr = inet_addr("127.0.0.1"); //local host if (connect(c,(struct sockaddr *)&server,sizeof(server)) < 0) { // Here is my error printf("Error when connecting! %s\n",strerror(errno)); return 1; } while(1) { char msg[100]; printf("Give message: "); fgets(msg,sizeof(msg),stdin); send(c,&msg,0); char resp[100]; recv(c,&resp,sizeof(resp),0); printf("Received: %s\n",resp); } close(c); }
编辑
当然 !该错误实际上在服务器中.我只是发现客户端发送消息,所以我缩小了我的观点,甚至没有回头看服务器.
由于错误似乎也在我的服务器上,我可能最终会问另一个问题并将其链接到这里
服务器正在听(12345)…
解决方法
根据
man page:
ECONNREFUSED
No-one listening on the remote address.
为了提供一个简单的远程端点,可以接受您的连接并发回所接收的数据(回显服务器),您可以尝试这样的事情:python server(或使用netcat):
import socket s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(("localhost",1234)) s.listen(1) conn,addr = s.accept() print 'Connected by',addr while 1: data = conn.recv(1024) if not data: break conn.sendall(data) conn.close()