#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>//struct sockaddr_in
#include<arpa/inet.h>// inet_pton
#include<strings.h>
#include <unistd.h>
int main()
{
int ret;
int sockfd=socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in my_addr;//定义一个绑定地址 my_addr类型都是 struct sockaddr_in 赋值ip地址
//清空
bzero(&my_addr,sizeof(my_addr));
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(8000);//我想要套接字拥有一个8000的端口
//INADDR_ANY 让系统自动寻找可用的本地ip地址
my_addr.sin_addr.s_addr=htons(INADDR_ANY);//INADDR_ANY==0
//强转
bind(sockfd,(struct sockaddr *)&my_addr,sizeof(my_addr));
struct sockaddr_in ser_addr;
bzero(&my_addr,sizeof(ser_addr));
ser_addr.sin_family=AF_INET;
ser_addr.sin_port=htons(8001);//服务器的端口
ser_addr.sin_addr.s_addr=inet_addr("192.168.230.1");//服务器的ip
//如果socket没有绑定固定的ip及端口 在调用connect的时候 系统会自动分配ip和端口
//阻塞,要经历三次握手
connect(sockfd,(struct sockaddr *)&ser_addr,sizeof(ser_addr));
ret=fork();
if(ret>0){
while(1){
//给服务器发送数据 send
printf("发送的消息\n");
char buf[128]="";
fgets(buf,sizeof(buf),stdin);
send(sockfd,buf,strlen(buf),0); //0是标准发送
}
}
else if(ret==0){
while(1){
//接收服务器数据
char msg[128]="";
recv(sockfd,msg,sizeof(msg),0);
printf("收到的消息=%s\n",msg);
}
}
close(sockfd);
return 0;
}
tcp客户端代码
最新推荐文章于 2022-06-18 23:09:29 发布