标题:
TCP服务器端和客户端程序设计(3)
[打印本页]
作者:
yuyang911220
时间:
2015-11-25 20:10
标题:
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 plain
copy
#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;
}
实验结果:
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0