网络编程初习

服务端

#include<iostream>
#include<cstdlib>
#include<cstring>
#include<unistd.h>
#include<cerrno>
#include<pthread.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<stdio.h>
#define SERV_PORT 9527
using namespace std;

void sys_err(const char *str)
{
	perror(str);
	exit(1);
}

int main()
{
	int lfd=0,cfd=0;
	int ret=0;
	char buf[BUFSIZ],client_IP[1024];

	struct sockaddr_in serv_addr,clit_addr;
	socklen_t clit_addr_len;

	serv_addr.sin_family=AF_INET;
	serv_addr.sin_port=htons(SERV_PORT);
	serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);

	lfd=socket(AF_INET,SOCK_STREAM,0);
	if(lfd==-1){
	sys_err("socket error:");
}
	bind(lfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr));

	listen(lfd,128);

	clit_addr_len=sizeof(clit_addr);
	cfd=accept(lfd,(struct sockaddr*)&clit_addr,&clit_addr_len);
	if(cfd==-1){
	sys_err("accept error:");
}
	cout<<"client ip:"<<inet_ntop(AF_INET,&clit_addr.sin_addr.s_addr,client_IP,sizeof(client_IP))<<"port: "<<ntohs(clit_addr.sin_port)<<endl;

	while(1){
	ret=read(cfd,buf,sizeof(buf));
	write(STDOUT_FILENO,buf,ret);

	for(int i=0;i<ret;i++)
		buf[i]=toupper(buf[i]);
	write(cfd,buf,ret);
	}

  close(lfd);
  close(cfd);

	return 0;
}

客户端

#include<iostream>
#include<stdio.h>
#include<cstdlib>
#include<cstring>
#include<unistd.h>
#include<cerrno>
#include<pthread.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#define SERV_PORT 9527
using namespace std;

void sys_err(const char *str)
{
	perror(str);
	exit(1);
}

int main()
{
    int cfd;
    char buf[BUFSIZ];

    struct sockaddr_in serv_addr;
    serv_addr.sin_family=AF_INET;
    serv_addr.sin_port=htons(SERV_PORT);
    inet_pton(AF_INET,"127.0.0.1",&serv_addr.sin_addr.s_addr);

    cfd=socket(AF_INET,SOCK_STREAM,0);
    if(cfd==-1) sys_err("socket error:");

    int ret=connect(cfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr));
    if(ret!=0){
        sys_err("connect error:");
    }

    while(1){
        write(cfd,"hello\n",6);
       ret=read(cfd,buf,sizeof(buf));
       write(STDOUT_FILENO,buf,ret);
       sleep(1);
    };

    return 0;
}

Python编程在初高中阶段主要是为了培养学生的逻辑思维、算法理解和基本编程技能。以下是一些Python编程学习中常见的习题类型和话题: 1. **基础语法**: - 变量和数据类型(整数、浮点数、字符串、列表、元组、字典) - 条件语句(if-else, switch case模拟) - 循环(for和while) 2. **函数和模块**: - 定义和调用函数 - 使用内置函数(如len(), range()) - 列表推导式 - 序列操作(排序、查找等) 4. **数据结构**: - 队列和栈 - 哈希表(字典)和集合 - 堆和优先队列 5. **算法实践**: - 排序算法(冒泡排序、快速排序、插入排序等) - 搜索算法(线性搜索、二分搜索) - 图形和树的遍历 6. **数学应用**: - 计算器程序,实现基本的数学运算 - 数学问题求解(比如斐波那契数列) 7. **文件操作**: - 读写文本文件 - 文件路径处理 8. **网络编程**: - HTTP请求(GET/POST) - JSON数据解析 9. **面向对象编程**: - 类和对象 - 继承和多态 - 封装和抽象 **相关问题**: 1. Python中的变量声明有何不同? 2. 如何在Python中实现简单的函数递归? 3. 什么是Python中的迭代器和生成器? **注意**: 这些只是基础题目的概述,并不是完整的题库。实际的习题会随着年级和难度逐渐提升,涵盖更多高级主题和项目实战。你可以根据学生的学习阶段,寻找相应的在线资源、教科书或编程课程来进行深入练习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值