TCP网络程序设计

tcp_server.c

#include<stdio.h>
#include<sys/socket.h>
#include<string.h>
#include<netinet/in.h>
#define portnum 3333

int main()
{
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
char buffer[128];
int nbyte;
int sockfd,new_fd,sin_size;
//1创建套接字
  if( (sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("creat socket failed ");
exit(1);
}

//2.1设置地址
bzero(&server_addr,sizeof(struct sockaddr_in));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htos(portnum);
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);


//2绑定地址
bind(sockfd, (struct sockaddr *)(&server_addr),sizeof(struct sockaddr));

//3监听端口
listen(sockfd,5);
while(1)
{
//4等待连接
sin_size=sizeof(struct sockaddr)
new_fd=accept(sockfd,(struct sockaddr *)(&client_addr), &sin_size);
printf("server get connection from %s ",inet_ntoa(client_addr.sin_addr));

//5接收数据
nbyte=recv(new_fd,buffer,128,0);
buffer[nbyte]='';
printf("server received: %s ",buffer);
//6结束连接
close(new_fd);
}
close(sockfd);
return 0;
}

tcp_client.c

#include<stdio.h>
#include<sys/socket.h>
#include<string.h>
#include<netinet/in.h>

#define portnum 3333

int main()
{
char buffer[128];
struct sockaddr_in server_addr;
int sockfd;

//1连接套接字
  if( (sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("creat socket failed ");
exit(1);
}

//2.1设置要连接的服务器地址
bzero(&server_addr,sizeof(struct sockaddr_in));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htos(portnum);
server_addr.sin_addr.s_addr=inet_addr("192.168.124.129"); //in_addr_t inet_addr(const char *cp)功能:将字符串形式的IP地址转化为整数型的IP地址(网络字节序)

//2.2连接服务器
if( connect(sockfd, (struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
{
printf("connect socket failed ");
exit(1);
}


//3发送数据到服务器
printf("please input char: ");
fgets(buffer,128,stdin);
send(sockfd,buffer,strlen(buffer),0);

//4关闭连接
close(sockfd);
return 0;

}

原文地址:https://www.cnblogs.com/1932238825qq/p/7384284.html