我正在尝试创建一个侦听套接字连接的进程.当我在main()函数中绑定,监听和等待接受时,它似乎有效.但是当我尝试创建一个新线程并在新线程上绑定,监听和接受时,它就失败了.这是我的代码.
void request_handler(int clientSock) {
FILE *requestedFile = NULL;
long fileSize = 0;
struct stat st;
long bytesRead;
char buffer[1024];
requestedFile = fopen("/PATH/book.txt", "rb");
while(!feof(requestedFile)) {
bytesRead = fread(buffer, 1, sizeof(buffer), requestedFile);
send(clientSock, buffer, bytesRead, 0);
}
}
void listener() {
int server_sock_desc;
struct sockaddr_in name;
int client_sock_desc;
struct sockaddr_in client_name;
socklen_t addr_size;
pthread_t handler_thread;
printf("waiting");
//connection setup
server_sock_desc = socket(PF_INET, SOCK_STREAM, 0);
if(server_sock_desc != -1) {
memset(&name, 0, sizeof(name));
name.sin_family = AF_INET;
name.sin_port = htons(5000);
name.sin_addr.s_addr = htonl(INADDR_ANY);
int …
Run Code Online (Sandbox Code Playgroud) 另一个"结果太大" - c ++套接字的问题并没有多大帮助.我有一个服务器代码,但每次运行它时,我会得到一个"结果太大" - 对于listen() - 函数的错误.希望,你可以帮忙!
SOCKET sd;
SOCKET sd2;
char serve_1_clien_0_intern;
struct sockaddr_in server;
struct sockaddr_in client;
void udp_init(unsigned short port_number, int a1, int a2, int a3, int a4, char serve_1_clien_0 ){
WSADATA w;
serve_1_clien_0_intern = serve_1_clien_0;
if (WSAStartup(0x0101, &w) != 0){
fprintf(stderr, "Could not open Windows connection.\n");
return;
exit(0);
}
sd = socket(AF_INET, SOCK_DGRAM, 0);
if (sd == INVALID_SOCKET){
fprintf(stderr, "Could not create socket.\n");
WSACleanup();
return;
exit(0);
}
memset((void *)&server, '\0', sizeof(struct sockaddr_in));
server.sin_family = AF_INET; …
Run Code Online (Sandbox Code Playgroud) 我的来源
import pymysql
import socket
conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='user', passwd=None, db='extractor')
cur = conn.cursor()
cur.execute("SELECT * FROM res")
for response in cur:
print(response)
cur.close()
conn.close()
Run Code Online (Sandbox Code Playgroud)
错误
Traceback (most recent call last):
File "C:\Users\Jonathan\Desktop\python.py", line 20, in <module>
conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='bitnami', passwd=None, db='extractor')
File "C:\Python33\lib\site-packages\pymysql\__init__.py", line 93, in Connect
return Connection(*args, **kwargs)
File "C:\Python33\lib\site-packages\pymysql\connections.py", line 510, in __init__
self._connect()
File "C:\Python33\lib\site-packages\pymysql\connections.py", line 658, in _connect
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
AttributeError: 'module' object has no attribute 'AF_UNIX'
>>>
Run Code Online (Sandbox Code Playgroud) 我很困惑和搜索,但无法找到我的问题的答案,帮助我....
ServerSocket s= new ServerSocket(port);
Run Code Online (Sandbox Code Playgroud)
这个端口号来自哪里?即使我使用4位或5位数字中的任何一个数字,它仍然可以完美地运行,但为什么以及如何?例如,端口号可以是任何5009,12221,6785等,但为什么呢?谁决定它应该是多少?
我正在考虑从Delphi中的非阻塞套接字服务器的select()转换为WSAPoll()/ poll(),我遇到了这个描述WSAPoll严重缺陷的对话.有谁知道WSAPoll是否有修复或解决方法?或者我唯一的选择是I/O完成端口的额外工作?
我正在写一个服务器 - 客户端聊天程序.
这是我的代码
服务器:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class HelloServer {
public final static int defaultPort = 2345;
public static void main(String[] args) {
int port = defaultPort;
try {
port = Integer.parseInt(args[0]);
} catch (Exception e) {
}
if (port <= 0 || port >= 65536) {
port = defaultPort;
}
try {
ServerSocket ss = new ServerSocket(port);
while (true) {
try {
Socket s = ss.accept();
String response = "Hello …
Run Code Online (Sandbox Code Playgroud) 我有两个相同程序的进程,可能在两台不同的机器上运行.我希望进程P2通过套接字从进程P1接收函数指针.
有可能吗?这是一个好习惯吗?
编辑:更有趣的是发送函数的代码,但我对此持怀疑态度.可能吗?
我有一个简单的套接字服务器示例,其中用户连接到它,可能会也可能不会立即发送输入(在这种情况下,它不会).Java引发异常,我不明白为什么.
这是代码:
public static void main(String[] args) {
org.apache.log4j.PropertyConfigurator.configure("conf/log4j.properties");
log.debug("Application started");
try {
// Setup socket server
int port = 9999;
sv = new ServerSocket(port);
// Accept incoming sockets or block
Socket s = sv.accept();
log.warn("Accepted new client connection!");
InputStreamReader reader = new InputStreamReader(s.getInputStream(), "UTF-8");
while(!reader.ready()) {}
char[] b = null;
reader.read(b);
log.warn(new String(b));
} catch (Exception e) {
System.out.print(e.getMessage() + "\n");
e.printStackTrace();
System.exit(1);
}
}
Run Code Online (Sandbox Code Playgroud)
并且堆栈跟踪:
DEBUG [main] (Main.java:38) - Application started
WARN [main] (Main.java:47) - Accepted new client …
Run Code Online (Sandbox Code Playgroud) 在C中,我有一个简单的服务器/客户端UDP套接字编程示例.客户端以高速率向服务器发送数据包,而服务器读取每个传入的消息并将其发送回客户端.客户端永远不会读取任何传入的消息.
有没有理由相信发送回客户端的数据包会填满客户端的缓冲区?如果客户没有阅读任何内容,他们究竟会发生什么?它们会立即被丢弃吗?
我想使用python套接字来创建一个服务器,多个客户端可以连接到该服务器并回显文本输入.是否有一个基本的服务器,我可以用几行代码设置?我已经准备好连接客户了我只需要知道这些客户端连接的基本python套接字服务器是什么样的.