TCP 通信
2016-06-12 19:45
316 查看
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <sys/ioctl.h>
#include <termios.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>
#include <sys/time.h>
int main(int argc,char **argv)
{
pid_t fd;
const char buff[] = "Hello! Welcome here gggggggggggg!\r\n"; //定义要发送的数据缓冲区;
int sockfd,connsock; //定义一个socket套接字,用于通讯
struct sockaddr_in serveraddr;//定义网络套接字地址结构
if(argc!= 2)
{
printf("Usage: echo ip地址");
exit(0);
}
sockfd =socket(AF_INET,SOCK_STREAM,0); //创建一个套接字
bzero(&serveraddr,sizeof(serveraddr));
serveraddr.sin_family = AF_INET; //指定使用的通讯协议族
serveraddr.sin_port = htons(5000);//指定要连接的服务器的端口
inet_pton(AF_INET, argv[1], &serveraddr.sin_addr);
connect(sockfd,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); //连接服务器
send(sockfd,buff,sizeof(buff), 0);//向客户端发送数据
close(sockfd); //关闭套接字
return(0);
}
//服务器端代码
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <sys/ioctl.h>
#include <termios.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>
#include <sys/time.h>
void main()
{
pid_t fd;
int listensock,connsock;
char recvbuff[100]; //定义要接收的数据缓冲区
struct sockaddr_in serveraddr; //定义网络套接字地址结构
listensock = socket(AF_INET,SOCK_STREAM,0); //创建一个套接字,用于监听
bzero(&serveraddr,sizeof(struct sockaddr)); //地址结构清零
serveraddr.sin_family = AF_INET; //指定使用的通讯协议族
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); //指定接受任何连接
serveraddr.sin_port = htons(5000); //指定监听的端口
bind(listensock,(struct sockaddr *)&serveraddr,sizeof(struct sockaddr_in));//给套接口邦定地址
listen(listensock,1024); //开始监听
connsock = accept(listensock,(struct sockaddr *)NULL, NULL);
//建立通讯的套接字,accept函数,等待客户端程序使用connect函数的连接
recv(connsock,recvbuff,sizeof(recvbuff),0); //接收服务器的数据
printf("%s\n",recvbuff); //打印接收到的数据
sleep(2);
close(connsock); //关闭通讯套接字
close(listensock); //关闭监听套接字
}
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <sys/ioctl.h>
#include <termios.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>
#include <sys/time.h>
int main(int argc,char **argv)
{
pid_t fd;
const char buff[] = "Hello! Welcome here gggggggggggg!\r\n"; //定义要发送的数据缓冲区;
int sockfd,connsock; //定义一个socket套接字,用于通讯
struct sockaddr_in serveraddr;//定义网络套接字地址结构
if(argc!= 2)
{
printf("Usage: echo ip地址");
exit(0);
}
sockfd =socket(AF_INET,SOCK_STREAM,0); //创建一个套接字
bzero(&serveraddr,sizeof(serveraddr));
serveraddr.sin_family = AF_INET; //指定使用的通讯协议族
serveraddr.sin_port = htons(5000);//指定要连接的服务器的端口
inet_pton(AF_INET, argv[1], &serveraddr.sin_addr);
connect(sockfd,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); //连接服务器
send(sockfd,buff,sizeof(buff), 0);//向客户端发送数据
close(sockfd); //关闭套接字
return(0);
}
//服务器端代码
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <sys/ioctl.h>
#include <termios.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>
#include <sys/time.h>
void main()
{
pid_t fd;
int listensock,connsock;
char recvbuff[100]; //定义要接收的数据缓冲区
struct sockaddr_in serveraddr; //定义网络套接字地址结构
listensock = socket(AF_INET,SOCK_STREAM,0); //创建一个套接字,用于监听
bzero(&serveraddr,sizeof(struct sockaddr)); //地址结构清零
serveraddr.sin_family = AF_INET; //指定使用的通讯协议族
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); //指定接受任何连接
serveraddr.sin_port = htons(5000); //指定监听的端口
bind(listensock,(struct sockaddr *)&serveraddr,sizeof(struct sockaddr_in));//给套接口邦定地址
listen(listensock,1024); //开始监听
connsock = accept(listensock,(struct sockaddr *)NULL, NULL);
//建立通讯的套接字,accept函数,等待客户端程序使用connect函数的连接
recv(connsock,recvbuff,sizeof(recvbuff),0); //接收服务器的数据
printf("%s\n",recvbuff); //打印接收到的数据
sleep(2);
close(connsock); //关闭通讯套接字
close(listensock); //关闭监听套接字
}
相关文章推荐
- 关于内存问题提醒!结构体+protobuf做协议体发送!
- 模拟简单距离向量算法的更新——计算机网络作业
- Android 视频播放器 VideoView 的使用,播放本地视频 和 网络 视频
- 常用网络结构
- Android加载网络图片
- JBWEB000065: HTTP Status 500 - Request processing failed; nested exception is javax.ejb.EJBException
- Linux抓包工具tcpdump详解
- 安卓发送Get、Post请求,解决参数乱码问题
- HttpWebRequest用法
- 配置内外网通信(虚拟机内网)
- memcached网络实现部分简介
- 理解LSTM网络
- Lab 8:网络LED矩阵显示器
- 深入理解 HTTP 协议 POST 与PUT 方法区别
- 机房4台服务器集群网络配置
- iOS应用架构谈 网络层设计方案
- Android下的两种http通信机制介绍
- 分布式系统和网络系统
- 网络的混杂模式
- HTTP请求头参数