#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
#define ERR_MSG(msg) {\
fprintf(stderr," %d %s ",__LINE__,__func__);\
perror(msg);\
}
int main(int argc, const char *argv[])
{
//sfd
int sfd=socket(AF_INET,SOCK_STREAM,0);
if(sfd<0){
ERR_MSG("socket")
return -1;
}
puts("等待客户端链接。。。");
int reuser=1;
if(setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,&reuser,sizeof(reuser))<0){
ERR_MSG("setsockop");
return -1;
}
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(8765);
sin.sin_addr.s_addr = inet_addr("192.168.124.38");
bind(sfd,(struct sockaddr*)&sin,sizeof(sin));
listen(sfd,100);
struct sockaddr_in cin;
socklen_t socklen=(socklen_t)sizeof(cin);
int cfd=accept(sfd,(struct sockaddr*)&cin,&socklen);
printf("[%s:%d]成功链接\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port));
char arr[1024]="";
char arrr[1024]="";
int res;
while(1){
//读
bzero(arr,sizeof(arr));
res=recv(cfd,arr,sizeof(arr),0);
if(res==0){
puts("客户端下线");
break;
}
printf("[%s:%d]<<<%s\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),arr);
//写
printf("[%s:%d]>>>",inet_ntoa(sin.sin_addr),ntohs(sin.sin_port));
fgets(arrr,sizeof(arrr),stdin);
send(cfd,arrr,sizeof(arrr),0);
}
//关闭
if(close(sfd)<0){
ERR_MSG("close");
return -1;
}
close(cfd);
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
#define ERR_MSG(msg) {\
fprintf(stderr," %d %s ",__LINE__,__func__);\
perror(msg);\ puts("创建成功");
}
int main(int argc, const char *argv[])
{
//cfd
int cfd=socket(AF_INET,SOCK_STREAM,0);
if(cfd<0){
ERR_MSG("socket")
return -1;
}
//绑定服务器地址
//bind 第一个参数是刚刚创建的sfd
//第二个参数是服务器的详细
//第三个是传输大小
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(8765);
sin.sin_addr.s_addr = inet_addr("192.168.124.38");
// bind(sfd,(struct sockaddr*)&sin,sizeof(sin));
struct sockaddr_in cin;
cin.sin_family = AF_INET;
cin.sin_port = htons(6789);
cin.sin_addr.s_addr = inet_addr("192.168.124.38");
bind(cfd,(struct sockaddr*)&cin,sizeof(cin));
//链接指定的服务器
if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin))<0){
ERR_MSG("connect");
return -1;
}
printf("[%s:%d]成功链接\n",inet_ntoa(sin.sin_addr),ntohs(sin.sin_port));
char arr[1024]="";
char arrr[1024]="";
int res;
while(1){
//写
printf("[%s:%d]>>>",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port));
fgets(arrr,sizeof(arrr),stdin);
send(cfd,arrr,sizeof(arrr),0);
//读
bzero(arr,sizeof(arr));
res=recv(cfd,arr,sizeof(arr),0);
if(res==0){
puts("服务器下线");
break;
}
printf("[%s:%d]>>>%s\n",inet_ntoa(sin.sin_addr),ntohs(sin.sin_port),arr);
}
//关闭
if(close(cfd)<0){
ERR_MSG("close");
return -1;
}
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
#define ERR_MSG(msg) {\
fprintf(stderr," %d %s ",__LINE__,__func__);\
perror(msg);\
}
int main(int argc, const char *argv[])
{
//创建报套接字
int fd=socket(AF_INET,SOCK_DGRAM,0);
if(fd<0){
ERR_MSG("socket");
return -1;
}
struct sockaddr_in udp_in;
udp_in.sin_family = AF_INET;
udp_in.sin_port = htons(6677);
udp_in.sin_addr.s_addr = inet_addr("192.168.124.38");
if(bind(fd,(struct sockaddr*)&udp_in,sizeof(udp_in))<0){
ERR_MSG("bind");
return -1;
}
struct sockaddr_in udp_cin;
char arr[1024]="";
int size=sizeof(udp_cin);
while(1){
bzero(arr,sizeof(arr));
if(recvfrom(fd,arr,sizeof(arr),0,(struct sockaddr*)&udp_cin,&size)<0){
ERR_MSG("recvfrom");
return -1;
}
puts(arr);
bzero(arr,sizeof(arr));
printf("[服务器]请输入>>>");
fgets(arr,sizeof(arr),stdin);
if(sendto(fd,arr,sizeof(arr),0,(struct sockaddr*)&udp_cin,sizeof(udp_cin))<0){
ERR_MSG("sendto");
return -1;
}
}
close(fd);
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
#define ERR_MSG(msg) {\
fprintf(stderr," %d %s ",__LINE__,__func__);\
perror(msg);\
}
int main(int argc, const char *argv[])
{
//创建报套接字
int fd=socket(AF_INET,SOCK_DGRAM,0);
if(fd<0){
ERR_MSG("socket")
return -1;
}
struct sockaddr_in udp_in;
udp_in.sin_family = AF_INET;
udp_in.sin_port = htons(6677);
udp_in.sin_addr.s_addr = inet_addr("192.168.124.38");
bind(fd,(struct sockaddr*)&udp_in,sizeof(udp_in));
struct sockaddr_in udp_cin;
char arr[1024]="";
int size=sizeof(udp_cin);
while(1){
bzero(arr,sizeof(arr));
printf("[客户端]请输入>>>");
fgets(arr,sizeof(arr),stdin);
sendto(fd,arr,sizeof(arr),0,(struct sockaddr*)&udp_in,sizeof(udp_in));
bzero(arr,sizeof(arr));
recvfrom(fd,arr,sizeof(arr),0,NULL,NULL);
puts(arr);
}
close(fd);
return 0;
}