1.查看while源代码
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#define portnumber 3333
int main(int argc, char* argv[]) {
int local_socket;
char buffer[1024];
struct sockaddr_in server_addr;
struct hostent* host;
if (argc != 2) {
fprintf(stderr, "Usage:%s hostname \a\n", argv[0]);
exit(1);
}
/* 使用hostname查询host名字*/
if ((host = gethostbyname(argv[1])) == NULL) {
fprintf(stderr, "ERR gethostbyname\n");
exit(1);
}
/* 客户程序开始建立 local_socket描述符*/
if ((local_socket = socket(AF_INET, SOCK_STREAM, 0)) == -1) { // AF_INET:Internet;SOCK_STREAM:TCP
fprintf(stderr, "ERR socket:%s\a\n", strerror(errno));
exit(1);
}
/* 客户程序填充服务器的资料 */
bzero(&server_addr, sizeof(server_addr)); // 初始化,置0
server_addr.sin_family = AF_INET; // IPV4
server_addr.sin_port = htons(portnumber); // (将本机上的short数据转化为网络上的short数据)端口号
server_addr.sin_addr = *((struct in_addr*)host->h_addr); // IP地址
/* 客户程序发起连接请求 */
if (connect(local_socket, (struct sockaddr*)(&server_addr), sizeof(struct sockaddr)) == -1) {
fprintf(stderr, "ERR connect:%s\a\n", strerror(errno));
exit(1);
}
/* 连接成功了*/
printf("Please typein a string:\n");
/* 读取和发送数据*/
fgets(buffer, 1024, stdin);
write(local_socket, buffer, strlen(buffer));
/* 结束通讯 */
close(local_socket);
exit(0);
}
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#define portnumber 3333
int main(int argc, char* argv[]) {
int local_listen_socket, server_session_socket;
struct sockaddr_in server_addr_info_struct;
struct sockaddr_in client_addr_info_struct;
int size_of_sockaddr_in;
int read_got_bytes_nr;
char buffer[1024];
/* socket: 客户端开始建立ockfd鎻描述符*/
if ((local_listen_socket = socket(AF_INET, SOCK_STREAM, 0)) == -1) { // AF_INET i.e. IPV4; SOCK_STREAM i.e. TCP
fprintf(stderr, "Socket error:%s\n\a", strerror(errno));
exit(1);
}
/* 准备sockaddr结构及其内部IP、端口信息*/
bzero(&server_a