//服务器
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>雹戚
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
main()
{
//创建套接字
int serverSocket= socket(AF_INET,SOCK_STREAM,0)
struct sockaddr_in server_addr
struct sockaddr_in clientAddr
int addr_len = sizeof(clientAddr)
int client
char buffer[200]
//创建地址
bzero(&server_addr,sizeof(server_addr))
server_addr.sin_family =AF_INET
server_addr.sin_port = htons(5555)
server_addr.sin_addr.s_addr = htonl(INADDR_ANY)
//绑定
bind(serverSocket,(struct sockaddr *)&server_addr,sizeof(server_addr))
//帧听
listen(serverSocket,5)
printf("客户端发过来的 :\n")
/源悉陵/接收
client=accept(serverSocket,(sockaddr *)&clientAddr,(socklen_t*)&addr_len)
printf("客户端发过来的 :\n")
while(1)
{
if(recv(client,buffer,sizeof(buffer),0)>0)
printf("客户端发过来的 : %s\n",buffer)
}
return 0
}
//客户端
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
main()
{
struct sockaddr_in serverAddr
int clientSocket=socket(AF_INET,SOCK_STREAM,0)
char sendbuf[200]
//创建地址信息
serverAddr.sin_family=AF_INET
serverAddr.sin_port=htons(5555)
serverAddr.sin_addr.s_addr=inet_addr("127.0.0.1")
//连接服务器
connect(clientSocket,(sockaddr*)&serverAddr,sizeof(serverAddr))
printf("连接目标主机中.....\n连接完成......\n")
//
while(1)
{
printf("请输入发给服务器的数据 : ")
scanf("陆漏%s",sendbuf)
//strcmp函数作用,比较两个东东(按ASCII值大小相比较),相同就==0。
if(strcmp(sendbuf,"x")==0)
break
send(clientSocket,sendbuf,sizeof(sendbuf),0)
}
close(clientSocket)
return 0
}
其实发牌问题里有个随机的问题,就是模拟洗牌的问题,我来尝试下这个程序吧(每个花色的代码分别是:红桃 \x3,方块\x4,梅花\x5,黑桃\x6#include <stdio.h>
#include <time.h>
char hua_se[4]={'\x3','\x4','\x5','\x6'} //定义一个数组来存放花色
char *dight[14]={"Ace","two","three","four","中毁搜five","six","seven","eight","nine","ten","jack","queen","king"}/余悔/定义一个指针型的数组来存放数字
int fa_pai[4][13]={0}//定义一个二维数组来发牌
void move(int fa_pai[4][13])
void deal(int fa_pai[4][13],char huase[4],char *dight[4][13])
int main(void){srand(time(NULL))
move(fa_pai)
deal(hua_se,dight,fa_pai)
printf("你是否卖历想结束发牌?Y/N")
getch()return 0}void move(int fa_pai[4][13]){int r,card,row,column
for(card=1card<=52card++)
{
r=rand()
row=r%4
r=rand()
column=r%13
while(fa_pai[4][13]!=0)
{
r=rand()
row=r%4
r=rand()
column=r%13
}
fa_pai[row][column]=card
}
}
void deal(int fapai[4][13],char hua_se[3],char *dight[13])
{
char cint card,row,column
for(card=1card<=52card++)
{
for(row=0row<=3row++)
{
for(column=0column<=12column++)
{
if(fapai[row][column]==card)
{
if(card%3=0)c='\n'
elsec='\t'
printf("%5sof%-8s%c",hua_se[row],dight[column],c)
}
}
}
}
}
import java.awt.*// 导入相应的awt工具组件import java.awt.event.*// 导入awt工具组件的事件类
/**
* 作用:calc类用于演示加法计算器的功能<p>
* @author 网络用户
* @version 1.0 2009-6-3
* @since JDK 1.5
*/
class calc extends WindowAdapter implements ActionListener
{
//以下声明相关变量
Frame f //窗口
// Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9
Button b[] = new Button[10] //10个按钮,分缓山别对应数字0到9
Button be, badd, bc //bc为=,badd为+,bc为归0按钮
TextField answer //文本框answer用于显示相加的结果
Panel p //面板
String s = "" //临时变量,用于记住被加数
int t1, t2 //t1,t2分别表示被加数,加数
/**
* 作用:main方激哪悉法为程序运行的入口
* @param args
*/
public static void main( String args[] )
{
calc cg = new calc() //创建一个calc类的对象
cg.go() //调用go方法,显示加法器界面,并完成加法功能
}
/**
* 作用:go()方法用于显示加法器界面,并完成加法功能
*/
public void go()
{
p = new Panel() //创建面板的对象,10个按钮将在此面板对象上添加和显示
answer = new TextField("0", 15) //设置文本框的默认值为0,文本框的长度15个字符
b[0] = new Button("0") //以下就是那10个按钮,按钮上的文本就是0到9的数字
b[1] = new Button("1")
b[2] = new Button("2")
b[3] = new Button("3")
b[4] = new Button("4")
b[5] = new Button("5")
b[6] = new Button("6")
b[7] = new Button("7")
b[8] = new Button("8")
b[9] = new Button("9")
be = new Button("=") //等号
badd = new Button("+") //加号
bc = new Button("C") //归0按钮
p.setLayout(new GridLayout(4, 3)) //将面板设置为4行3列,即12个格子,刚好可以存放地10个数字按钮另加+号按钮和=号按钮,共12个按钮
p.add(b[7]) //添加10个数字按钮到面板上
p.add(b[8])
p.add(b[9])
p.add(b[4])
p.add(b[5])
p.add(b[6])
p.add(b[1])
p.add(b[2])
p.add(b[3])
p.add(b[0])
for( int i = 0i <b.lengthi++ )
b[i].addActionListener(this) //为10个数字按钮添加事件监听器,以用于实现加法功能
p.add(be) //添加=号按钮到面板上
p.add(badd)//添加+号按明乎钮到面板上
be.addActionListener(this) //为=号按钮添加事件监听器,用于实现加法功能
badd.addActionListener(this)//为+号按钮添加事件监听器,用于实现加法功能
f = new Frame("calc") //创建一个Frame对象(窗口),窗口的标题就是calc
f.setSize(300, 300)//窗口的大小为300*300像素
f.add(answer, "North") //将文本框设置在窗口的北部(上),窗口的默认布局为BorderLayout,即东西南北中5个位置
f.add(p, "Center") //将面板设置在窗口的中部(中)
f.add(bc, "South") //将归0按钮设置在窗口的南部(下)
bc.addActionListener(this) //为归0按钮添加事件监听器,用于将计算结果归0
f.addWindowListener(this) //为窗口添加事件监听器,用于实现关闭窗口的功能
f.pack() //此方法用于窗口到合适的大小
f.setVisible(true) //显示窗口,为false时将不会显示窗口
}
//在10个数字按钮和3个功能按钮上单击,将触发此方法
public void actionPerformed( ActionEvent e )
{
if( e.getSource() == bc )
{//单击了归0按钮,设置为默认值
s = ""
t1 = 0//被加数设0
t2 = 0//加数设0
answer.setText("0") //文本框设为0
} else if( e.getSource() == badd )
{//单击+号按钮
t1 = Integer.parseInt(s) //记下被加数
s = ""
} else if( e.getSource() == be )
{//单击=号按钮
t2 = Integer.parseInt(s) //记下加数
t2 = t2 + t1 //把被加数与加数相加
answer.setText((new Integer(t2)).toString()) //在文本框上显示相加的结果
} else
{//单击0到9之间的任意一个数字按钮
for( int i = 0i <b.lengthi++ )
if( e.getSource() == b[i] )
{
System.out.println("1")
s = s + b[i].getActionCommand() //获得被单击按钮上的数字
answer.setText(s) //在文本框上显示连续单击那几个数字
}
}
}
//关闭窗口,触发此方法
public void windowClosing( WindowEvent ev )
{
System.exit(0) //退出程序
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)