首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

TCP服务器端和客户端程序设计(3)

TCP服务器端和客户端程序设计(3)

实验二 TCP客户端程序设计一、实验目的
学习和掌握Linux下的TCP客户端基本原理和基本编程方法。
二、实验平台
Linux操作系统
三、实验内容
编写Linux下TCP客户端套接字程序,结合实验一的服务器端程序,实现以下功能:
1、客户根据用户提供的IP地址连接到相应的服务器;
2、服务器等待客户的连接,一旦连接成功,则显示客户的IP地址、端口号,并向客户端发送字符串;
3、客户接收服务器发送的信息并显示。
四、实验原理
见实验一的实验原理部分。
五、实验步骤
1、登陆进入ubuntu操作系统,新建一个文件,命名为tcpclient.c(为了方便起见,可以进入“home”,再进入用户目录,在用户目录下新建tcpclient.c)。
2、在tcpclient.c中编写客户端程序代码并保存。将实验一完成的tcpserver.c拷贝到与tcpclient.c同一目录下。
3、在“终端”(“Applications”→“附件”→“终端”)中执行命令进入tcpserver.c和tcpclient.c所在目录。
4、执行命令gcc –o tcpserver tcpserver.c生成可执行文件tcpserver。
5、执行命令./ tcpserver。
6、再开一个“终端”,进入tcpserver.c和tcpclient.c所在目录,执行命令
gcc–o tcpclient tcpclient.c生成可执行文件tcpclient。
7、执行命令./ tcpclient 127.0.0.1。
8、观察两个“终端”出现的结果。
9、认真分析源代码,体会如何编写一个TCP客户端程序。

六、参考程序(tcpclient.c

[cpp] view plaincopy

  • #include<stdio.h>
  •        #include <stdlib.h>
  •        #include<unistd.h>
  •        #include<string.h>
  •        #include<sys/types.h>
  •        #include<sys/socket.h>
  •        #include<netinet/in.h>
  •        #include<netdb.h>

  •        #define  PORT 1234
  •        #define  MAXDATASIZE 100

  •        int main(int argc, char *argv[])  
  •        {  
  •        int  sockfd, num;  
  •        char  buf[MAXDATASIZE];  
  •        struct hostent *he;  
  •        struct sockaddr_in server;  
  •        if (argc!=2) {  
  •        printf("Usage:%s <IP Address>\n",argv[0]);  
  •        exit(1);  
  •        }  
  •        if((he=gethostbyname(argv[1]))==NULL){  
  •        printf("gethostbyname()error\n");  
  •        exit(1);  
  •        }  
  •        if((sockfd=socket(AF_INET, SOCK_STREAM, 0))==-1){  
  •        printf("socket()error\n");  
  •        exit(1);  
  •        }  
  •        bzero(&server,sizeof(server));  
  •        server.sin_family= AF_INET;  
  •        server.sin_port = htons(PORT);  
  •        server.sin_addr =*((struct in_addr *)he->h_addr);  
  •        if(connect(sockfd,(struct sockaddr *)&server,sizeof(server))==-1){  
  •        printf("connect()error\n");  
  •        exit(1);  
  •        }  
  •        if((num=recv(sockfd,buf,MAXDATASIZE,0)) == -1){  
  •        printf("recv() error\n");  
  •        exit(1);  
  •        }  
  •        buf[num-1]='\0';  
  •        printf("Server Message: %s\n",buf);  
  •        close(sockfd);  
  • return 0;  
  • }  



实验结果:



继承事业,薪火相传
返回列表