socket编程
2016-07-15 15:44
281 查看
view plaincopy to clipboardprint?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int
main(int
argc,
char
*argv[])
{
int
server_sockfd;//服务器端套接字
int
client_sockfd;//客户端套接字
int
len;
struct
sockaddr_in my_addr;
//服务器网络地址结构体
struct
sockaddr_in remote_addr;
//客户端网络地址结构体
int
sin_size;
char
buf[BUFSIZ];
//数据传送的缓冲区
memset(&my_addr,0,sizeof(my_addr));
//数据初始化--清零
my_addr.sin_family=AF_INET;
//设置为IP通信
my_addr.sin_addr.s_addr=INADDR_ANY;//服务器IP地址--允许连接到所有本地地址上
my_addr.sin_port=htons(8000);
//服务器端口号
if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return
1;
}
if
(bind(server_sockfd,(struct
sockaddr *)&my_addr,sizeof(struct
sockaddr))<0)
{
perror("bind");
return
1;
}
listen(server_sockfd,5);
sin_size=sizeof(struct
sockaddr_in);
if((client_sockfd=accept(server_sockfd,(struct
sockaddr *)&remote_addr,&sin_size))<0)
{
perror("accept");
return
1;
}
printf("accept client %s\n",inet_ntoa(remote_addr.sin_addr));
len=send(client_sockfd,"Welcome to my server\n",21,0);//发送欢迎信息
while((len=recv(client_sockfd,buf,BUFSIZ,0))>0))
{
buf[len]='\0';
printf("%s\n",buf);
if(send(client_sockfd,buf,len,0)<0)
{
perror("write");
return
1;
}
}
close(client_sockfd);
close(server_sockfd);
return
0;
}
[b]TCP协议:[/b]
客户端:tcp_client.c
view plaincopy to clipboardprint?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int
main(int
argc,
char
*argv[])
{
int
client_sockfd;
int
len;
struct
sockaddr_in remote_addr;
//服务器端网络地址结构体
char
buf[BUFSIZ];
//数据传送的缓冲区
memset(&remote_addr,0,sizeof(remote_addr));
//数据初始化--清零
remote_addr.sin_family=AF_INET;
//设置为IP通信
remote_addr.sin_addr.s_addr=inet_addr("127.0.0.1");//服务器IP地址
remote_addr.sin_port=htons(8000);
//服务器端口号
if((client_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return
1;
}
if(connect(client_sockfd,(struct
sockaddr *)&remote_addr,sizeof(struct
sockaddr))<0)
{
perror("connect");
return
1;
}
printf("connected to server\n");
len=recv(client_sockfd,buf,BUFSIZ,0);//接收服务器端信息
buf[len]='\0';
printf("%s",buf);
//打印服务器端信息
while(1)
{
printf("Enter string to send:");
scanf("%s",buf);
if(!strcmp(buf,"quit")
break;
len=send(client_sockfd,buf,strlen(buf),0);
len=recv(client_sockfd,buf,BUFSIZ,0);
buf[len]='\0';
printf("received:%s\n",buf);
}
close(client_sockfd);//关闭套接字
return
0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int
main(int
argc,
char
*argv[])
{
int
server_sockfd;//服务器端套接字
int
client_sockfd;//客户端套接字
int
len;
struct
sockaddr_in my_addr;
//服务器网络地址结构体
struct
sockaddr_in remote_addr;
//客户端网络地址结构体
int
sin_size;
char
buf[BUFSIZ];
//数据传送的缓冲区
memset(&my_addr,0,sizeof(my_addr));
//数据初始化--清零
my_addr.sin_family=AF_INET;
//设置为IP通信
my_addr.sin_addr.s_addr=INADDR_ANY;//服务器IP地址--允许连接到所有本地地址上
my_addr.sin_port=htons(8000);
//服务器端口号
if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return
1;
}
if
(bind(server_sockfd,(struct
sockaddr *)&my_addr,sizeof(struct
sockaddr))<0)
{
perror("bind");
return
1;
}
listen(server_sockfd,5);
sin_size=sizeof(struct
sockaddr_in);
if((client_sockfd=accept(server_sockfd,(struct
sockaddr *)&remote_addr,&sin_size))<0)
{
perror("accept");
return
1;
}
printf("accept client %s\n",inet_ntoa(remote_addr.sin_addr));
len=send(client_sockfd,"Welcome to my server\n",21,0);//发送欢迎信息
while((len=recv(client_sockfd,buf,BUFSIZ,0))>0))
{
buf[len]='\0';
printf("%s\n",buf);
if(send(client_sockfd,buf,len,0)<0)
{
perror("write");
return
1;
}
}
close(client_sockfd);
close(server_sockfd);
return
0;
}
[b]TCP协议:[/b]
客户端:tcp_client.c
view plaincopy to clipboardprint?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int
main(int
argc,
char
*argv[])
{
int
client_sockfd;
int
len;
struct
sockaddr_in remote_addr;
//服务器端网络地址结构体
char
buf[BUFSIZ];
//数据传送的缓冲区
memset(&remote_addr,0,sizeof(remote_addr));
//数据初始化--清零
remote_addr.sin_family=AF_INET;
//设置为IP通信
remote_addr.sin_addr.s_addr=inet_addr("127.0.0.1");//服务器IP地址
remote_addr.sin_port=htons(8000);
//服务器端口号
if((client_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return
1;
}
if(connect(client_sockfd,(struct
sockaddr *)&remote_addr,sizeof(struct
sockaddr))<0)
{
perror("connect");
return
1;
}
printf("connected to server\n");
len=recv(client_sockfd,buf,BUFSIZ,0);//接收服务器端信息
buf[len]='\0';
printf("%s",buf);
//打印服务器端信息
while(1)
{
printf("Enter string to send:");
scanf("%s",buf);
if(!strcmp(buf,"quit")
break;
len=send(client_sockfd,buf,strlen(buf),0);
len=recv(client_sockfd,buf,BUFSIZ,0);
buf[len]='\0';
printf("received:%s\n",buf);
}
close(client_sockfd);//关闭套接字
return
0;
}
相关文章推荐
- JAVA BIO、NIO、AIO理解
- RabbitMQ学习(九)之spring整合发送同步消息
- handle句柄
- struts2--封装数据
- JAVA jdk环境变量的配置
- RabbitMQ学习(八)之spring-amqp的重要类的认识
- cannot Go to definition in visual studio code
- JAVA-找不到元素 'beans' 的声明
- python问题:IndentationError:expected an indented block错误解决
- Python在线运行代码助手
- Java中位运算(移位、位与、或、异或、非)
- rbenv 管理多个版本Ruby
- RabbitMQ学习(六)之远程过程调用(RPC)(java)
- C语言中的static 详细分析
- ActiveQM与spring集成配置
- c++ : new 在特定指针处构造初始化
- 利用虚拟机搭建FTP服务
- 上传文件到服务器
- 【spring】spring reference doc4.3.1 研读 <一>元数据配置以及Environment
- RabbitMQ学习(五)之主题topic(java)