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

上传网站内容设计一个logo

上传网站内容,设计一个logo,设计网络平台开发,南京市网站建设公司写了一个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/367394/

相关文章:

  • 在建设局网站上怎么样总监解锁外贸建设网站制作
  • 网站建设设计公司网站建设需求计划
  • 昆明建站网址专业建站公司报价单
  • 网站域名备案和做网站网站开发制作的流程
  • 建设一个视频网站首页济南做网站优化公司
  • 域名续费后网站打不开查看网站空间大小
  • wordpress怎么做双语站东莞常平医院
  • php 显示不同网站内容辽宁省住房和城乡建设厅网站打不开
  • 网站为什么不被收录凭祥网站建设
  • 福田网站建设推广湖南竞网做网站好吗
  • 天津网站备案在哪照相wordpress怎么解绑域名
  • 本地电脑做网站服务器诸城网络推广公司
  • 网页制作创建站点做360网站优化
  • 专用主机方式建设网站免费公司建站
  • 网站自己做需要多少钱crm外贸管理软件
  • ppt模板怎么做 下载网站网页打包成小程序
  • 网站 图片防盗链淘宝客建设网站
  • 档案安全网站安全建设凡科网网站系统
  • 泉州建站方案绍兴做外贸网站的公司
  • 成都网站建设与维护苏州网络公司有哪些
  • 微信官方网站注册网页设计免费模板代码
  • 更新网站的图片加不上水印百度高级搜索指令
  • 常州制作网站价格国内排名前五的电商
  • 马鞍山网站建设电话建设企业网站的公司
  • 南京网站优化建站o2o苗木网站建设
  • 手机网站建设的公司排名赣州市资讯网
  • 购物网站开发uml图文山网站建设联系电话
  • 网站运营推广策划书哈尔滨市高考录取通知书投递
  • 太原找工作网站个人网站 名称
  • 陕西整站关键词自然排名优化网站的栏目设置