zoukankan      html  css  js  c++  java
  • 修改后 简单的 TCP client

    /*
     ============================================================================
     Name        : TCPclient.c
     Author      : vestinfo
     Version     : 1.1
     Copyright   : www.cnblogs.com/vestinfo
     Description : TCP client
     ============================================================================
     */
    
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    
    #define PORT 8888
    #define REMOTE_IP "127.0.0.1"
    
    #define CLIENT_PORT 9999
    #define CLIENT_IP "192.168.77.172"
    
    #define MAXLENGTH 256
    
    int main()
    {
    	int sockfd;
    	struct sockaddr_in servaddr;
    	struct sockaddr_in clientaddr;
    	char mybuffer[MAXLENGTH];
    
    	/* 创建套接字。 */
    	if((sockfd = socket(AF_INET, SOCK_STREAM, 0))<0)
    	{
    		perror("socket");
    		exit(1);
    	}
    
    	/* 绑定client的地址和端口;当然client端可不绑定,由内核分配。 */
    	bzero(&clientaddr, sizeof(clientaddr));
    	clientaddr.sin_family = AF_INET;
    	clientaddr.sin_port = htons(CLIENT_PORT);
    	clientaddr.sin_addr.s_addr = inet_addr(CLIENT_IP);
    	if(bind(sockfd, (struct sockaddr *)&clientaddr, sizeof(clientaddr)) < 0)
    	{
    		perror("bind");
    		exit(1);
    	}
    
    	/* 向server发起连接请求 */
    	bzero(&servaddr, sizeof(servaddr));
    	servaddr.sin_family = AF_INET;
    	servaddr.sin_port = htons(PORT);
    	servaddr.sin_addr.s_addr = inet_addr(REMOTE_IP);
    	if(connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr))<0)
    	{
    		perror("connect");
    		exit(1);
    	}
    	else
    	{
    		printf("connected successfully!\n");
    		printf("remote ip:%s\n",REMOTE_IP);
    		printf("remote port:%d\n",PORT);
    	}
    
    	for( ; ; )
    	{
    		bzero(mybuffer, MAXLENGTH);
    		read(STDIN_FILENO, mybuffer, MAXLENGTH);		//从键盘读信息,STDIN_FILENO=0.
    
    		if(write(sockfd, mybuffer, strlen(mybuffer)) < 0)	//发送从键盘读到的信息
    		{
    			perror("write");
    			exit(1);
    		}
    
    		if(read(sockfd, mybuffer, MAXLENGTH) <= 0)
    		{
    			perror("read");
    			close(sockfd);
    			exit(1);
    		}
    		else
    		{
    			printf("received from server:%s\n", mybuffer);
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    [luoguP2762] 太空飞行计划问题(最大权闭合图—最小割—最大流)
    [luoguP2680] 运输计划(lca + 二分 + 差分)
    [luoguP2758] 编辑距离(DP)
    [luoguP2890] [USACO07OPEN]便宜的回文Cheapest Palindrome(DP)
    Javascript对象拷贝(clone)
    使用JavaScript访问XML数据
    javascript 树形菜单
    Simple JavaScript Inheritance
    用 javascript 操作 xml
    javascript flash 弹框
  • 原文地址:https://www.cnblogs.com/helloweworld/p/2711510.html
Copyright © 2011-2022 走看看