2024年4月16日发(作者:)
struct sockaddr_in servaddr;
struct sockaddr_in cliaddr;
int sin_size;
//socket
if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket()");
exit(1);
}
//set socket can be reuse
int opt = SO_REUSEADDR;
setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
//bind
memset(&servaddr, 0, sizeof(servaddr));
_family = AF_INET;
_addr.s_addr = htonl(INADDR_ANY);
_port = htons(PORT);
if (bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1)
{
perror("bind()");
exit(1);
}
//listen
if (listen(listenfd, BACKLOG) == -1) {
perror("listen()");
exit(1);
}
//accept
sin_size = sizeof(cliaddr);
if ((connfd = accept(listenfd, (struct sockaddr*)&cliaddr, &sin_size)) =
= -1) {
perror("accept()");
exit(1);
}
//print client ip
printf("get a connection from %sn", inet_ntoa(_addr));
//send
char *msg = "welcome to server";
send(connfd, msg, strlen(msg), 0);
//close
close(connfd);
close(listenfd);
return 0;
}
View Code
tcp客户端
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define PORT 8888
#define MAXDATASIZE 100
int main(int argc, char *argv[])
{
int fd, numbytes;
char buf[MAXDATASIZE];
struct hostent *he;
struct sockaddr_in servaddr;
if (argc != 2) {
printf("usage: %s
exit(1);
}
if ((he = gethostbyname(argv[1])) == NULL) {
perror("gethostbyname()");
exit(1);
}
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket()");
exit(1);
}
bzero(&servaddr, sizeof(servaddr));
_family = AF_INET;


发布评论