c语言tcp连接(c语言tcp传输文件)

      最后更新:2023-06-06 19:41

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

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

      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语言写的tcp程序的源码,程序越简单越好,C++也可以,最好带注释

      最简单的那种?我给你写一个=,= //服务器#include #include #include #include #include #include #include #include #include #include #include #include main(){//创建套接字int serverSocket= socket(AF_INET,SOCK_STREAM,0);struct sockaddr_in server_addr;struct sockaddr_in clientAddr;int addr_len = sizeof(clientAddr);int client;char buffer[200];//创建地址bzero(&server_addr,sizeof(server_addr));server_addr.sin_family =AF_INET;server_addr.sin_port = htons(5555);server_addr.sin_addr.s_addr = htonl(INADDR_ANY);//绑定bind(serverSocket,(struct sockaddr *)&server_addr,sizeof(server_addr));//帧听listen(serverSocket,5);printf("客户端发过来的 :n");//接收client=accept(serverSocket,(sockaddr *)&clientAddr,(socklen_t*)&addr_len);printf("客户端发过来的 :n");while(1){if(recv(client,buffer,sizeof(buffer),0)>0)printf("客户端发过来的 : %sn",buffer);}return 0;}//客户端#include #include #include #include #include #include #include #include #include #include #include #include main(){struct sockaddr_in serverAddr;int clientSocket=socket(AF_INET,SOCK_STREAM,0);char sendbuf[200];//创建地址信息serverAddr.sin_family=AF_INET;serverAddr.sin_port=htons(5555);serverAddr.sin_addr.s_addr=inet_addr("127.0.0.1");//连接服务器connect(clientSocket,(sockaddr*)&serverAddr,sizeof(serverAddr));printf("连接目标主机中.....n连接完成......n");//while(1){printf("请输入发给服务器的数据 : ");scanf("%s",sendbuf);//strcmp函数作用,比较两个东东(按ASCII值大小相比较),相同就==0。if(strcmp(sendbuf,"x")==0)break;send(clientSocket,sendbuf,sizeof(sendbuf),0);}close(clientSocket);return 0; }
      装个Linux自己有不懂的函数就man一下吧 client:#include#include#include#include#include#include#include#includeint main(int argc,char *argv[]){int sockfd;char buffer[1024];struct sockaddr_in server_addr;struct hostent *host;int portnumber,nbytes;if(3!=argc){fprintf(stderr,"Usage:%s hostname portnumberan",argv[0]);exit(1);}if(NULL==(host=gethostbyname(argv[1]))){fprintf(stderr,"Hostname error:%san",strerror(errno));exit(1);}if(1==(sockfd=socket(AF_INET,SOCK_STREAM,0))){fprintf(stderr,"Socket error:%san",strerror(errno));exit(1);}printf("Socket id is %dn",sockfd);server_addr.sin_family=AF_INET;server_addr.sin_port=htons(portnumber);server_addr.sin_addr=*((struct in_addr *)host->h_addr);server_addr.sin_addr.s_addr=htonl(INADDR_ANY);bzero(&server_addr,sizeof(struct sockaddr_in));//bind sockfdif(-1==bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))){fprintf(stderr,"Bind error:%sna",strerror(errno));exit(1);}printf("Bindn");if(-1==connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))){fprintf(stderr,"Connect Error:%sna",strerror(errno));exit(1);}printf("Connectn");if(-1==(nbytes=recv(sockfd,buffer,1024,0))){fprintf(stderr,"Read Error:%sna",strerror(errno));exit(1);}buffer[nbytes]='';printf("I have received:%sn",buffer);close(sockfd);exit(0);}server:#include#include#include#include#include#include#include#includeint main(int argc,char *argv[]){int sockfd,new_fd;struct sockaddr_in server_addr;struct sockaddr_in client_addr;int sin_size,portnumber;const char hello[]="Hellon";if(2!=argc){fprintf(stderr,"Usage:%s portnumberan",argv[0]);exit(1);}if((portnumber=atoi(argv[1]))<0){fprintf(stderr,"Usage:%s portnumberan",argv[0]);exit(1);}//server creatingif(1==(sockfd=socket(AF_INET,SOCK_STREAM,0))){fprintf(stderr,"Socket error:%s portnumberan",strerror(errno));exit(1);}printf("Socket id is %dn",sockfd);bzero(&server_addr,sizeof(struct sockaddr_in));server_addr.sin_family=AF_INET;server_addr.sin_addr.s_addr=htonl(INADDR_ANY);server_addr.sin_port=htons(portnumber);//bind sockfdif(-1==bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))){fprintf(stderr,"Bind error:%sna",strerror(errno));exit(1);}printf("Bindn");//listen sockfdif(-1==(listen(sockfd,5))){fprintf(stderr,"Listen error:%sna",strerror(errno));exit(1);}printf("Listenn");while(1){//try until connectsin_size=sizeof(struct sockaddr_in);if(-1==(new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size))){fprintf(stderr,"Accept error:%sna",strerror(errno));exit(1);}printf("Accept!n");fprintf(stderr,"Server get connection from %sn",inet_ntoa(client_addr.sin_addr));if(-1==send(new_fd,hello,strlen(hello),0)){fprintf(stderr,"Write Error:%sn",strerror(errno));exit(1);}close(new_fd);}close(sockfd);exit(0); }
      我这有。
      求一C语言写的tcp程序的源码,程序越简单越好,C++也可以,最好带注释

      tcp长连接编程和短连接编程的区别

      长连接就是建立TCP连接后,一直保持这个连接,一般会中间彼此发送心跳来确认对应的存在,中间会做多次业务数据传输,一般不会主动断开连接。 短连接一般指建立连接后,做一些操作 如:http请求,然后就关掉这个连接。所以就做短连接。
      1.最简单的方法:public static String reverse1(String str){   return new StringBuffer(str).reverse().toString();}2.最常用的方法:public static String reverse3(String s){char[] array = s.toCharArray();  String reverse = "";  //注意这是空,不是nullfor (int i = array.length - 1; i >= 0; i--)reverse += array[i];return reverse;}3.常用方法的变形: public static String reverse2(String s){ int length = s.length();   String reverse = "";  //注意这是空,不是nullfor (int i = 0; i < length; i++)    reverse = s.charAt(i) + reverse;//在前面连接,  而非常见的后面return reverse;}4.C语言中常用的方法: public static String reverse5(String orig){ char[] s = orig.toCharArray();int n = s.length - 1;int halfLength = n / 2;for (int i = 0; i <= halfLength; i++) {char temp = s[i];s[i] = s[n - i];s[n - i] = temp;}   return new String(s);  //知道  char数组和String相互转化  }
      tcp长连接编程和短连接编程的区别

      C语言建立TCP连接后,怎么发送HTTP的GET请求?

      send发送请求串 回车 再回车。 一行结束后 换另一个语句 最后要有一个空行 GET ***** 回车 回车
      直接用send发送即可,记得 http 协议要加上rn
      GET /index.html HTTP/1.1
      C语言建立TCP连接后,怎么发送HTTP的GET请求?

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

          热门文章

          文章分类