Tag: 套接字

关于Arduino上TCP的问题

我正在试验我的Arduino Leonardo和一个简单的C套接字服务器。 C部分必须向Arduino发送一个字符串,但我无法连接到arduino(套接字初始化后C函数被阻塞,无法连接到Arduino)。 C函数代码是: #include #include #pragma comment(lib, “ws2_32.lib”) //Winsock Library int connect() { WSADATA wsa; SOCKET s; struct sockaddr_in server; char* message; printf(“\nInitialising Winsock…”); if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) { printf(“Failed. Error Code : %d”, WSAGetLastError()); return 1; } printf(“Initialised.\n”); //Create a socket if ((s = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { printf(“Could […]

在Visual C ++中接受来自客户端(套接字编程)的连接的问题

我在Visual C ++中编写了一个简单的单线程客户端服务器应用程序。 当我运行我的服务器时,我等待一段时间它接受来自客户端的一些请求。 当我将客户端连接到服务器时。 客户端上的日志消息报告发送14个字节,服务器上没有消息。 我已经编写了一个print语句来打印控制台上服务器接受的任何内容,但服务器不打印任何内容。 在我看来,客户端已连接到其他服务器。 客户端和服务器代码如下。 服务器代码 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #include #include #include #include #include #define DEFAULT_PORT “27015” #define DEFAULT_BUFLEN 512 #pragma comment(lib, “Ws2_32.lib”) int main() { WSADATA wsdata; int result = WSAStartup(MAKEWORD(2,2),&wsdata); if (result != 0){ printf(“%s”,”Unable to initilize windows socket\n”); getch(); return 1; } struct addrinfo *addrResult […]

奇怪的printf()行为

我附上这个问题的代码应该得到设备的mac地址并打印出来。 当我将结构ifreq中的数据复制到uint8_t数组时,它可以工作,但是当我没有,我得到奇怪的结果。 查看第二行和输出的第二个字节。 #include #include #include #include #include #include #include #include int main() { uint8_t tab[6]; int i; struct ifreq one; int sd = socket(AF_PACKET, SOCK_RAW, 0); memset(&one, 0, sizeof(struct ifreq)); strcpy(one.ifr_name, “eth0”); int v = ioctl(sd, SIOCGIFHWADDR, &one); memcpy(tab, one.ifr_hwaddr.sa_data, sizeof(uint8_t) * 6); for(i=0;i<6;i++) printf("%02x:", tab[i]); printf("\n"); for(i=0;i<6;i++) printf("%02x:", one.ifr_hwaddr.sa_data[i]); printf("\n"); } OUTPUT: 74:86:7A:0A:2C:6D: […]

如何在会话期间获得新的套接字连接?

我正在使用带有send()和recv() C风格TCP套接字。 我在用户A和用户B之间运行连接,其中用户A充当服务器,用户B充当客户端。 我希望有一个被动用户C,它不会进行任何通信,但会从用户A接收数据。但是,新的被动用户C可以随时加入会话。 A可能会发送与发送B不同的C数据包。我想AC最好在不同于AB的端口上进行通信 如何在任意通信点进行这种连接(没有线程等)? 编辑仍未解决。

C / unix套接字:由于char指针(?)导致的分段错误(核心dumbed)

(也许是这个问题的重复,但我发现很难自己查明我的问题,所以如果这里的答案与其他问题几乎相同,我会尝试删除这个问题) 我想创建一个客户端和一个服务器程序(使用pthreads的多个客户端),其中每个客户端发送N个号码(由用户输入)到服务器,服务器返回这些号码的平均值,如果是“确定消息”,如果平均值> 10,否则服务器返回“不正常消息”。 在客户端打印服务器的结果之后,询问用户是否要为其平均值输入新的数字序列。 这是我到目前为止的地方: 客户: #include #include #include #include #include #include #include #define SOCK_PATH “avg_socket” int main(void) { int i, s, t, len, done; int numofintegers; int yesorno; int average, avg; char *sequencecheck; struct sockaddr_un remote; char str[100]; if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { perror(“socket”); exit(1); } printf(“Trying to connect…\n”); remote.sun_family […]

使用Unix和C / C ++帮助阻止套接字

我正在试图弄清楚什么阻碍了我的程序。 我正在运行使用POSIX线程的服务器。 我必须为我的计算机编程实验室。 main函数侦听新连接。 一旦接受连接,它就会通过将FD传递给线程来创建新线程。 我能够使用多个telnet /客户端连接成功连接到服务器。 我可以成功地将数据发送到服务器一次,但如果我再次尝试发送,服务器将不会执行任何操作。 部分主要function int active_thread = 0; //The Running loop while(running) { if(active_thread > NUMBTHREADS) { printf(“Unable to accept client connection! Threads are all used up”); running = false; } else { if(FD_ISSET(sockfd, &readfds)) { if((bindfd[active_thread] = accept(sockfd, (struct sockaddr *) &client_addr, &client_sock_size)) == -1) { fprintf(stderr, “Unable to […]

g_io_channel + socket = server,还只得到一个客户端? 用C语言

伙计们,这里ma代码: #include #include // gio channel #include //socket(); #include // structure #include // printf void deal(GIOChannel *in, GIOCondition condition, gpointer data) { struct sockaddr_storage income; int insock = g_io_channel_unix_get_fd(in); socklen_t income_len = sizeof(income); int newsock = accept(insock, (struct sockaddr*)&income, &income_len ); if(newsock == -1) { printf(“failure on newsock\n”); } char buff[128]; int recv_total = 0; […]

Erlang中的tcp_socket行为不一致

为了一次读取输入1个字符,我写了一个使用ssty raw ac程序。 我使用这个character.c程序来调用一个erlang文件, naive_tcp.erl通过socket将消息发送到同一台机器上的监听服务器。 我希望这个服务器naive_tcp2.erl用26行降序整数和80字符长字符串写回2“|” 管道在其中,以便它在80×26终端上排队。 相反,会发生非常不一致的数据打印。 运行./character.c ,然后每隔几秒按键盘上的一个键,你可以看到输出以”26″开头并下降到”1″ ,但你可以看到它下降到”23″ , “21”或仅”24″ 。 character.c: #include #include int main(void){ system (“clear”); int c; /* use system call to make terminal send all keystrokes directly to stdin */ system (“/bin/stty raw”); while((c=getchar())!= ‘.’) { char command[100]; sprintf(command, “erl -noshell -run naive_tcp go -s erlang halt”); system(command); […]

如何使用FCGI检测客户端终止的连接?

我有一个用C语言编写的FCGI应用程序。我们遇到客户端关闭活动连接的情况 – 即在页面加载期间离开页面 – 如果可能的话,我们希望在应用程序中检测到这一点。 我们的Web服务器(nginx)配置为在客户端连接意外关闭时关闭FCGI连接,所以我希望通过在事务结束时查看FCGI流状态,我们可能能够检测到客户端 -启动了封闭连接。 我的问题是:在调用FCGX_Finish_r()之前,是否可以在输出流上使用FCGX_GetError()检测到这一点? 如果没有,我怎么能陷入这样的状况呢? 我尝试在FastCGI邮件列表上询问,但似乎列表已关闭。

C服务器 – “连接已重置”

我修改了beej的网络示例指南(如下所示),将html响应传回浏览器。 我每次刷新都会“重置连接”,似乎无法弄明白为什么? 就像它在发出html响应之前关闭连接一样。 调试的任何想法或建议? 编辑:它有时会将正确的数据传递给浏览器。 这是代码: /* ** server.c — a stream socket server demo */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define PORT “8080” // the port users will be connecting to #define BACKLOG 10000 // how many pending connections queue will hold using namespace std; […]