- 9
- 0
- 约4.05千字
- 约 12页
- 2022-06-30 发布于江苏
- 举报
C语言版-Socket通信原理(附运行截图)
PAGE 3
1
简单的客户/服务器程序设计与实现
实验目的及要求:
1、熟悉C编程环境。
2、熟悉Socket编程原理,掌握简单的套接字编程。
实验设备:
硬件:PC机
软件:CodeBlocks
实验内容及步骤:
什么是 Socket?
Socket 英文直译为“孔或插座”,也称为套接字。用于描述 IP 地址和端口号,是一种进程间的通信机制。你可以理解为 IP 地址确定了网内的唯一计算机,而端口号则指定了将消息发送给哪一个应用程序(大多应用程序启动时会主动绑定一个端口,如果不主动绑定,操作系统自动为其分配一个端口)。
Socket 的类型
Stream:一种流式 Socket,针对于面向连接的 TCP 服务应用,安全,但效率低。(本文重点)
程序并调试通过。
程序分两部分:客户程序和服务器程序。
工作过程是: 服务器首先启动,它创建套接字之后等待客户的连接;客户启动后创建套接字,然后和服务器建立连接;建立连接后,客户接收键盘输入,然后将数据发送到服务器,服务器收到到数据后,将接收到的字符在屏幕上显示出来。或者服务器接收键盘输入,然后将数据发送到客户机,客户机收到数据后,将接收到的字符在屏幕上显示出来。
服务器端代码:
#include stdio.h
#include winsock2.h
#pragma comment (lib, ws2_32)
#define N 20
struct stu
{
char no[20];
char name[20];
}d[N];
int fd(char *stum,int n)
{
int i,j;
FILE *fp;
char* res=;
fp=fopen(D:\\student.txt,r);
for( i=0;in;i++)
fscanf(fp,%s\t%s,d[i].no,d[i].name);
fclose(fp);
for( j=0;jn;j++)
{
if(strcmp(d[j].no,stum)==0)
{res=d[j].name;
break;}
res=no this student!;
}
return res;
}
int stuno()
{
FILE *fp;
fp=fopen(D:\\student.txt,r);
int i=1;
char c;
while(!feof(fp)){
while(c==\n)
{
i++;
break;
}
c=fgetc(fp);
continue;
}
fclose(fp);
return i;
}
int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), wsaData);
SOCKET s=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
struct sockaddr_in sockaddr;
sockaddr.sin_family=PF_INET;
sockaddr.sin_addr.S_un.S_addr=inet_addr(192.168.1.118);
sockaddr.sin_port=htons(8000);
bind(s, (SOCKADDR*)sockaddr, sizeof(SOCKADDR));
listen(s, 1);
printf(listening on port [%d].\n, 8000);
int i=stuno();
printf(%d,i);
while(TRUE)
{
SOCKADDR clientAddr;
int size=sizeof(SOCKADDR);
SOCKET clientsocket;
clientsocket=accept(s, clientAddr, size);
printf(***SYS*** Ne
原创力文档

文档评论(0)