求一C语言写的tcp程序的源码,程序越简单越好,C++也可以,最好带注释
答案:3 悬赏:70 手机版
解决时间 2021-01-20 08:13
- 提问者网友:遮云壑
- 2021-01-19 20:39
求一C语言写的tcp程序的源码,程序越简单越好,C++也可以,最好带注释
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-01-19 21:58
最简单的那种?我给你写一个=,=
//服务器
#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("客户端发过来的 : %s\n",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;
}追问g:\tcp\新建文件夹\cpp1.cpp(9) : fatal error C1083: Cannot open include file: 'netdb.h': No such file or directory错误,是不是要用wintc才行,我想顺便问下,怎样去运行服务端和客户端,还是只要在上面编译成功运行就行,就是怎样用这两程序追答先运行服务器,再运行客户端啊。。。
然后客户端就可以发信息给服务器了
这个都是在LINUX下编程的吧=。=追问谢谢了
//服务器
#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("客户端发过来的 : %s\n",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;
}追问g:\tcp\新建文件夹\cpp1.cpp(9) : fatal error C1083: Cannot open include file: 'netdb.h': No such file or directory错误,是不是要用wintc才行,我想顺便问下,怎样去运行服务端和客户端,还是只要在上面编译成功运行就行,就是怎样用这两程序追答先运行服务器,再运行客户端啊。。。
然后客户端就可以发信息给服务器了
这个都是在LINUX下编程的吧=。=追问谢谢了
全部回答
- 1楼网友:鸠书
- 2021-01-20 00:22
我这有。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯