当前位置: 首页 > news >正文

免费建站工具有哪些惠州仲恺住房和城乡建设局网站

免费建站工具有哪些,惠州仲恺住房和城乡建设局网站,网页版微信二维码传送助手,怎么选择郑州网站建设写了一个socket的程序#xff0c;可以和本地的服务器进行通信#xff0c;要先和服务器建立链接#xff0c;然后发送登录信息#xff0c;验证成功#xff0c;就可以和服务器通信了 1 页面截图 2 点击链接服务器#xff0c;可以链接服务器#xff0c;服务器的ip地址为可以和本地的服务器进行通信要先和服务器建立链接然后发送登录信息验证成功就可以和服务器通信了 1 页面截图 2 点击链接服务器可以链接服务器服务器的ip地址为127.0.0.1 端口为 12345 3 点击链接服务器之后打印信息如下 4 点击登录会向服务器发送登录信息 iam:zhangsan, 然后会客户端会显示登录成功 5 比如输入chongqingyoudian  6 在服务器控制台就能看到客户端发送的信息 客户端代码如下 1 //2 // ViewController.m3 // 05.聊天室4 //5 // Created by apple on 14/12/5.6 // Copyright (c) 2014年 heima. All rights reserved.7 //8 9 #import ViewController.h10 11 interface ViewController ()NSStreamDelegate,UITextFieldDelegate,UITableViewDataSource,UITableViewDelegate{12 NSInputStream *_inputStream;//对应输入流13 NSOutputStream *_outputStream;//对应输出流14 }15 property (weak, nonatomic) IBOutlet NSLayoutConstraint *inputViewConstraint;16 property (weak, nonatomic) IBOutlet UITableView *tableView;17 18 property (nonatomic, strong) NSMutableArray *chatMsgs;//聊天消息数组19 20 end21 22 implementation ViewController23 24 -(NSMutableArray *)chatMsgs{25 if (!_chatMsgs) {26 _chatMsgs [NSMutableArray array];27 }28 29 return _chatMsgs;30 }31 32 - (void)viewDidLoad {33 [super viewDidLoad];34 // Do any additional setup after loading the view, typically from a nib.35 36 37 // 2.收发数据38 // 做一个聊天39 // 1.用户登录40 // 2.收发数据41 42 // 监听键盘43 [[NSNotificationCenter defaultCenter] addObserver:self selector:selector(kbFrmWillChange:) name:UIKeyboardWillChangeFrameNotification object:nil];44 }45 46 47 -(void)kbFrmWillChange:(NSNotification *)noti{48 NSLog(%,noti.userInfo);49 50 // 获取窗口的高度51 52 CGFloat windowH [UIScreen mainScreen].bounds.size.height;53 54 55 56 // 键盘结束的Frm57 CGRect kbEndFrm [noti.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];58 // 获取键盘结束的y值59 CGFloat kbEndY kbEndFrm.origin.y;60 61 62 self.inputViewConstraint.constant windowH - kbEndY;63 }64 65 -(void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode{66 NSLog(%,[NSThread currentThread]);67 68 // NSStreamEventOpenCompleted 1UL 0,//输入输出流打开完成69 // NSStreamEventHasBytesAvailable 1UL 1,//有字节可读70 // NSStreamEventHasSpaceAvailable 1UL 2,//可以发放字节71 // NSStreamEventErrorOccurred 1UL 3,// 连接出现错误72 // NSStreamEventEndEncountered 1UL 4// 连接结束73 switch (eventCode) {74 case NSStreamEventOpenCompleted:75 NSLog(登录服务器成功输入输出流打开完成);76 break;77 case NSStreamEventHasBytesAvailable:78 NSLog(有字节可读);79 [self readData];80 break;81 case NSStreamEventHasSpaceAvailable:82 NSLog(可以发送字节);83 break;84 case NSStreamEventErrorOccurred:85 NSLog( 连接出现错误);86 break;87 case NSStreamEventEndEncountered:88 NSLog(连接结束);89 90 // 关闭输入输出流91 [_inputStream close];92 [_outputStream close];93 94 // 从主运行循环移除95 [_inputStream removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];96 [_outputStream removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];97 break;98 default:99 break; 100 } 101 102 } 103 #pragma mark 在这里先和服务器建立链接 104 - (IBAction)connectToHost:(id)sender { 105 // 1.建立连接 106 NSString *host 127.0.0.1; 107 int port 12345; 108 109 // 定义C语言输入输出流 110 CFReadStreamRef readStream; 111 CFWriteStreamRef writeStream; 112 CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)host, port, readStream, writeStream); 113 114 // 把C语言的输入输出流转化成OC对象 115 _inputStream (__bridge NSInputStream *)(readStream); 116 _outputStream (__bridge NSOutputStream *)(writeStream); 117 118 119 // 设置代理 120 _inputStream.delegate self; 121 _outputStream.delegate self; 122 123 124 // 把输入输入流添加到主运行循环 125 // 不添加主运行循环 代理有可能不工作 126 [_inputStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; 127 [_outputStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; 128 129 // 打开输入输出流 130 [_inputStream open]; 131 [_outputStream open]; 132 } 133 134 #pragma mark 在这里发送登录的信息 135 - (IBAction)loginBtnClick:(id)sender { 136 137 // 登录 138 // 发送用户名和密码 139 // 在这里做的时候只发用户名密码就不用发送 140 141 // 如果要登录发送的数据格式为 iam:zhangsan; 142 // 如果要发送聊天消息数据格式为 msg:did you have dinner; 143 144 //登录的指令 145 NSString *loginStr iam:zhangsan; 146 147 //把Str转成NSData 148 NSData *data [loginStr dataUsingEncoding:NSUTF8StringEncoding]; 149 150 151 [_outputStream write:data.bytes maxLength:data.length]; 152 } 153 154 #pragma mark 读了服务器返回的数据 155 -(void)readData{ 156 157 //建立一个缓冲区 可以放1024个字节 158 uint8_t buf[1024]; 159 160 // 返回实际装的字节数 161 NSInteger len [_inputStream read:buf maxLength:sizeof(buf)]; 162 163 // 把字节数组转化成字符串 164 NSData *data [NSData dataWithBytes:buf length:len]; 165 166 // 从服务器接收到的数据 167 NSString *recStr [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 168 169 NSLog(%,recStr); 170 171 [self reloadDataWithText:recStr]; 172 173 } 174 175 -(BOOL)textFieldShouldReturn:(UITextField *)textField{ 176 177 NSString *text textField.text; 178 179 NSLog(%,text); 180 // 聊天信息 181 NSString *msgStr [NSString stringWithFormat:msg:%,text]; 182 183 //把Str转成NSData 184 NSData *data [msgStr dataUsingEncoding:NSUTF8StringEncoding]; 185 186 // 刷新表格 187 [self reloadDataWithText:msgStr]; 188 189 // 发送数据 190 [_outputStream write:data.bytes maxLength:data.length]; 191 192 // 发送完数据清空textField 193 textField.text nil; 194 195 return YES; 196 } 197 198 -(void)reloadDataWithText:(NSString *)text{ 199 [self.chatMsgs addObject:text]; 200 201 [self.tableView reloadData]; 202 203 // 数据多应该往上滚动 204 NSIndexPath *lastPath [NSIndexPath indexPathForRow:self.chatMsgs.count - 1 inSection:0]; 205 [self.tableView scrollToRowAtIndexPath:lastPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 206 } 207 208 #pragma mark 表格的数据源 209 210 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 211 return self.chatMsgs.count; 212 } 213 214 215 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 216 { 217 static NSString *ID Cell; 218 UITableViewCell *cell [tableView dequeueReusableCellWithIdentifier:ID]; 219 220 cell.textLabel.text self.chatMsgs[indexPath.row]; 221 222 return cell; 223 } 224 225 -(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ 226 [self.view endEditing:YES]; 227 } 228 end 服务器端代码 1 from twisted.internet.protocol import Protocol, Factory2 from twisted.internet import reactor3 4 5 class IphoneChat(Protocol):6 def connectionMade(self):7 #self.transport.write(connected)8 self.factory.clients.append(self)9 print clients are , self.factory.clients 10 11 def connectionLost(self, reason): 12 self.factory.clients.remove(self) 13 14 def dataReceived(self, data): 15 #print data is , data 16 a data.split(:) 17 if len(a) 1: 18 command a[0] 19 content a[1] 20 21 msg 22 if command iam: 23 self.name content 24 msg self.name has joined 25 26 elif command msg: 27 msg self.name : content 28 29 print msg 30 31 for c in self.factory.clients: 32 c.message(msg) 33 34 def message(self, message): 35 self.transport.write(message \n) 36 37 38 factory Factory() 39 factory.protocol IphoneChat 40 factory.clients [] 41 42 reactor.listenTCP(12345, factory) 43 print Iphone Chat server started 44 reactor.run()  转载于:https://www.cnblogs.com/sunkaifeng/p/5070862.html
http://wiki.neutronadmin.com/news/214148/

相关文章:

  • 莆田企业免费建站北京品牌建设网站
  • 百度注册网站网站调用新浪微博
  • 做网站需要哪些费用支出简易的网站制作
  • 网站新闻标题字数湘潭做网站 都来磐石网络
  • 桂林北站地址网站转app工具
  • 网站建设网站排名优化社群营销的具体方法
  • 网站建设招标方案模板零售管理系统软件
  • 国内网站放国外服务器网站后台进入突然不显示
  • 郑州网站建设贴吧天蓝色网站
  • 网站推广优化之八大方法台山网站定制
  • 猎头公司网站素材wordpress 文中文档
  • 卫浴网站怎么做陕西省建设工程信息网官网
  • 网站宽度设计跨境电商物流模式主要有哪些
  • 徐汇区网站建设公司做公司网站哪里好
  • 网站建设优化扬州凡科 建设淘宝客网站
  • 网站ui设计包括哪些原则wordpress 新建用户
  • 网站首页没被收录手工做的网站
  • 电商网站如何提高转化率宁波建设集团股份有限公司官网
  • 怎么去建一个网站揭阳中小企业网站制作
  • 海南网站建设报价wap网站制作app
  • 郏县住房和城乡建设局网站自己建一个网站做电子商务
  • 效果好企业营销型网站建设开发诊所网站建设
  • 个体工商户软件开发网站建设维护网络技术服务合同
  • 网站建设项目表建设厅安全证考试报名在哪个网站
  • 给别人做网站做什么科目建立一个门户网站
  • 网站建设对电子商务中的作用king cms网站建设
  • 旅游网站建设 策划书石家庄情况最新消息今天
  • 分析可口可乐网站建设的目的零基础平面设计教程
  • 石河子做网站专用主机网站建设
  • 互联网设计公司网站wordpress布局 插件