网络通信与Socket
- 网络通信与Socket
服务器代码
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <ctype.h>
#include <arpa/inet.h>
#define SERVER_PORT 666
int main(void)
{
int sock;//代表信箱
struct sockaddr_in server_addr;
//1.美女创建的邮箱
sock=socket(AF_INET,SOCK_STREAM,0);
//2.初始化清空标签,写下地址和端口号
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family=AF_INET;//选择协议族IPV4
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);//监听本地所有IP地址
server_addr.sin_port = htons(SERVER_PORT);//绑定端口号
//实现标签贴到收信的信箱
bind(sock,(struct sockaddr *)&server_addr, sizeof(server_addr));
//同一时刻挂起的的数量
listen(sock,128);
printf("等待客户端的连接... \n");
// 接受信件
int done=1;
while(done)
{
int client_sock;
struct sockaddr_in client;
char client_ip[64];
socklen_t client_addr_len;
client_addr_len=sizeof(client);
client_sock = accept(sock,(struct sockaddr *)&client,&client_addr_len);
//打印客户端IP地址和端口号
printf("client ip :%s \t port : %d\n",
inet_ntop(AF_INET,&client.sin_addr.s_addr,client_ip,sizeof(client_ip)), ntohs(client.sin_port));
}
return 0;
}
- Socket 通信模型
*************
- 回声服务器
1.开启服务器
- 在服务器端开启服务器程序(即运行上层的代码)
- 开启Telnet服务器
输入服务器地址:192.168.203.129 (这里是输入自己Linux服务器的IP地址)
输入端口号:666 (这里输入的是服务器定义的端口号在程序中定义的)
在windows 使用Telnet客户端命令是在windows端模拟一个客户端链接到Linux的服务器
*********注意 *************
这里如果在Window上没有开启Telnet服务是无法使用 telnet 命令
这时候需要在windows 的控制面板中选择程序与功能打开windows功能对话框
将Telnet的服务和Telnet的客户端勾选上,并重新启动windows系统即可。
如果出现如下错误提示
是由于linux系统不是在root角色下
只需要切换到root角色并重新启动服务器即可。
现在再次在windows 下创建一个telnet客户端链接服务器
windows 上开启一个链接服务器的Telnet的客户端窗口并且在Linux上可以显示链接的客户端的IP地址和端口号
并且在Linux上可以显示链接的客户端的IP地址和端口号