c语言tcp连接(c语言编写tcp服务器)

      最后更新:2023-07-09 16:03

      用C语言写一段代码,与192.168.1.1的tcp80端口建立连接

      很早以前写的一段示例代码,希望对你有帮助//windows TCP Client# include "winsock2.h"void main(void){WSADATA wsaData;SOCKET s;SOCKADDR_IN ServerAddr;int Port = 80; //初始化Windows Socket 2.2 WSAStartup(MAKEWORD(2,2),wsaData); // 创建一个新的Socket来连接服务器 s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // 填写客户端地址信息// 端口为80// 服务器IP地址为"192.168.1.1",注意使用inet_addr将IP地址转换为网络格式 ServerAddr.sin_family = AF_INET;ServerAddr.sin_port = htons(Port);ServerAddr.sin_addr.s_addr = inet_addr("192.168.1.1"); // 向服务器发出连接请求 connect(s, (SOCKADDR *) &ServerAddr, sizeof(ServerAddr)); // 新的连接建立后,就可以互相通信了,在这个简单的例子中,我们直接关闭连接,// 并关闭监听Socket,然后退出应用程序 closesocket(s); // 释放Windows Socket DLL的相关资源 WSACleanup();}
      用C语言写一段代码,与192.168.1.1的tcp80端口建立连接

      采用C语言如何获取https客户端ip地址

      摘要如果是tcp连接的话,服务器端可以通过accept函数获得已连接的客户端的地址,这个地址里面可以解析出ip地址和端口
      采用C语言如何获取https客户端ip地址

      C语言实现socket编程TCP通信的问题?

      我做试验,发现是如果你这样写: char sendbuf[1024] = {"123456n"}; 也就是发送数据加上了换行,服务端立即显示了。看来不加换行就被缓存了(应该是被服务端收到但缓存了)。
      兄嘚,这是缓存问题。可以write之后用fflush清空
      C语言实现socket编程TCP通信的问题?

      Windows系统用C语言写TCP通信

      #include #include#include#pragma comment(lib,"ws2_32.lib")typedef struct{SOCKET accpt;int lock;}Arg;void *transfer(void *arg){Arg * info = (Arg *)arg;SOCKET clientSock;char recvbuf[102];char sendBuf[] = "10";int ret;memcpy(&clientSock,(void*)&info->accpt,sizeof(clientSock));info->lock =1;while (TRUE){ret = send(clientSock,sendBuf,2,0);if (ret == -1){break;}ret = recv(clientSock,recvbuf,102,0);printf("%sn",recvbuf);}return (void *)0;}void* timer(void *arg){time_t last = time(NULL);time_t now;int i = 20;while(i--){now = time(NULL);if(now - last == 1){printf("1s past!n");last = now;}Sleep(500);}printf("timer exit.n");return (void *)0;}int main(void) {WSADATA wsaData;SOCKET ListenSocket;SOCKADDR_IN service,client;int len = sizeof(client);Arg argument;pthread_t tid;char sendBuf[] = "ID=2;WHAT=host";int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);if (iResult != NO_ERROR) {printf("Error at WSAStartup()n");return 1;}ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (ListenSocket == INVALID_SOCKET) {printf("Error at socket(): %ldn", WSAGetLastError());WSACleanup();return 1;}service.sin_family = AF_INET;service.sin_addr.s_addr = inet_addr("127.0.0.1");service.sin_port = htons(27115);if (bind( ListenSocket,(SOCKADDR*) &service,sizeof(service)) == SOCKET_ERROR) {printf("bind() failed.n");closesocket(ListenSocket);WSACleanup();return 1;}if (listen( ListenSocket, 1 ) == SOCKET_ERROR) {printf("Error listening on socket.n");closesocket(ListenSocket);WSACleanup();return 1;}argument.lock = 1;printf("Waiting for client to connect...n");pthread_create(&tid,NULL,timer,NULL);while(TRUE){argument.accpt = accept( ListenSocket, (SOCKADDR*)&client, &len );if (argument.accpt == INVALID_SOCKET) {printf("accept failed: %dn", WSAGetLastError());closesocket(ListenSocket);WSACleanup();return 1;} else {printf("accept%s:%dn",inet_ntoa(client.sin_addr),client.sin_port);while (!argument.lock);argument.lock = 0;// sendto(argument.accpt,sendBuf,sizeof(sendBuf),0,(SOCKADDR*)&client,len);pthread_create(&tid,NULL,transfer,&argument);//send(AcceptSocket,sendBuf,sizeof(sendBuf),0);}}// No longer need server socketclosesocket(ListenSocket);WSACleanup();return 0; }
      Windows系统用C语言写TCP通信

      请问用C语言 socket编程,如何使TCP客户端实现网络恢复后自动重连的功能?

      呵呵,想了想 大概是这样几种可能,你可以尝试一下。 1。重新连接的过程要重新创建sockclient也就是重新调用函数创建。2。服务器关闭后再开启,绑定的是同一个接口。当关闭后再开启的时间较短时端口可能处于忙状态,倒置再开启绑定到该端口失败,也就是服务器端启动失败。 处理办法:你可以利用setsockopt函数,将端口设置为可重用状态,我忘记那个宏是什么了你可以上网去查查setsockopt的用法。希望对你有用 best wishes
      建议你去我的空间博客中看一下关于socket连接过程,你会明白为什么连接不了,因为accept后返回的socket是系统随机分配的。TCP指的点对点,其实就是socket对socket。
      请问用C语言 socket编程,如何使TCP客户端实现网络恢复后自动重连的功能?

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类